- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在过去的几个小时里,我一直在努力解决这个问题,尽管我很接近,但我的想法似乎只是让它变得越来越复杂,所以我认为我应该寻求帮助。
我在 C#
中有这个类:
public class MyTestObject
{
public string name { get; set; }
public string lastname { get; set; }
public List<MyImages> {get; set; }
}
public class MyImages
{
public string imageName { get; set; }
public string imageBytes { get; set; }
}
我想在 Android
中创建一个可以解析为该格式的 JSONObject
,但我不确定该怎么做。
这是我目前所拥有的(在 Android/Java
中):
Map<String, String> myParameters = new HashMap<>();
myParameters.put("name", "test");
myParameters.put("lastname", "test");
List<MyImage> images = getListOfImages();
if (images != null && images.size() > 0) {
Map<String, String> jsonMap = new HashMap<>();
for (MyImage image : images) {
jsonMap.put(image.getImageName(), image.getImageBytes());
}
myParameters.put("images", jsonMap);
}
JSONObject data = new JSONObject(myParameters);
callWcfService(data); // makes a POST request to the service and passes the JSON object
理论上,这种“几乎”以所需格式创建了 JSON 对象,但后来我无法在 C# 中对其进行解码。
这是应该解码 JSON 字符串的 WCF 服务中的代码:
var reader = new StreamReader(data);
var request = reader.ReadToEnd();
request = request.Replace("=", ":"); // i need to replace the `=` that is for some reason added in the JSON with `:`
var parser = new JavaScriptSerializer();
var myObject = parser.Deserialize<MyTestObject>(request); // it crashes here
异常(exception)情况是:
Cannot convert object of type 'System.String' to type 'System.Collections.Generic.List`1[MyImages]'
从 java 代码生成的 JSON 如下所示:
{"images":"{sl_big_ass_logo.png=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\n}","name":"test","lastname":"test"}
最佳答案
我不太了解Java,但我认为你的序列化算法是错误的,特别是这部分:
Map<String, String> jsonMap = new HashMap<>();
for (MyImage image : images) {
jsonMap.put(image.getImageName(), image.getImageBytes());
}
myParameters.put("images", jsonMap);
"images"
不应包含 Map<String, String>
而是 JsonArray
.
自 myParameters
类型为 Map<String, String>
您不能将数组添加到 hashmap,因此我们必须寻找更灵活的解决方案。
尝试以下操作:
JsonObjectBuilder jsonObject = Json.createObjectBuilder();
jsonObject.add("name", "test");
jsonObject.add("lastname", "test");
JsonArrayBuilder jsonArray = Json.createArrayBuilder();
for(MyImage image : images)
{
JsonObjectBuilder imageJson = Json.createObjectBuilder();
imageJson.add("imageName", image.getImageName());
imageJson.add("imageBytes", image.getImageBytes());
jsonArray.add(imageJson.build());
}
jsonObject.add("images", jsonArray.build());
JsonObject data = jsonObject.build();
callWcfService(data);
然后,您的 WCF 服务应该会根据您向我们展示的模型反序列化它。
请注意,我提供的代码未经我测试,而是取自 JsonArray's documentation
关于java - 如何在 android 中创建这个嵌套的 JSON 对象并在 c# 中对其进行解码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324593/
我喜欢 smartcase,也喜欢 * 和 # 搜索命令。但我更希望 * 和 # 搜索命令区分大小写,而/和 ?搜索命令遵循 smartcase 启发式。 是否有隐藏在某个地方我还没有找到的设置?我宁
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
从以下网站,我找到了执行java AD身份验证的代码。 http://java2db.com/jndi-ldap-programming/solution-to-sslhandshakeexcepti
似乎 melt 会使用 id 列和堆叠的测量变量 reshape 您的数据框,然后通过转换让您执行聚合。 ddply,从 plyr 包看起来非常相似..你给它一个数据框,几个用于分组的列变量和一个聚合
我的问题是关于 memcached。 Facebook 使用 memcached 作为其结构化数据的缓存,以减少用户的延迟。他们在 Linux 上使用 UDP 优化了 memcached 的性能。 h
在 Camel route ,我正在使用 exec 组件通过 grep 进行 curl ,但使用 ${HOSTNAME} 的 grep 无法正常工作,下面是我的 Camel 路线。请在这方面寻求帮助。
我正在尝试执行相当复杂的查询,在其中我可以排除与特定条件集匹配的项目。这是一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我正在尝试执行相当复杂的查询,我可以在其中排除符合特定条件集的项目。这里有一个 super 简化的模型来解释我的困境: class Thing(models.Model) user = mod
我发现了很多嵌入/内容项目的旧方法,并且我遵循了在这里找到的最新方法(我假设):https://blog.angular-university.io/angular-ng-content/ 我正在尝试
我正在寻找如何使用 fastify-nextjs 启动 fastify-cli 的建议 我曾尝试将代码简单地添加到建议的位置,但它不起作用。 'use strict' const path = req
我正在尝试将振幅 js 与 React 和 Gatsby 集成。做 gatsby developer 时一切看起来都不错,因为它发生在浏览器中,但是当我尝试 gatsby build 时,我收到以下错
我试图避免过度执行空值检查,但同时我想在需要使代码健壮的时候进行空值检查。但有时我觉得它开始变得如此防御,因为我没有实现 API。然后我避免了一些空检查,但是当我开始单元测试时,它开始总是等待运行时异
尝试进行包含一些 NOT 的 Kibana 搜索,但获得包含 NOT 的结果,因此猜测我的语法不正确: "chocolate" AND "milk" AND NOT "cow" AND NOT "tr
我正在使用开源代码共享包在 iOS 中进行 facebook 集成,但收到错误“FT_Load_Glyph failed: glyph 65535: error 6”。我在另一台 mac 机器上尝试了
我正在尝试估计一个标准的 tobit 模型,该模型被审查为零。 变量是 因变量 : 幸福 自变量 : 城市(芝加哥,纽约), 性别(男,女), 就业(0=失业,1=就业), 工作类型(失业,蓝色,白色
我有一个像这样的项目布局 样本/ 一种/ 源/ 主要的/ java / java 资源/ .jpg 乙/ 源/ 主要的/ java / B.java 资源/ B.jpg 构建.gradle 设置.gr
如何循环遍历数组中的多个属性以及如何使用map函数将数组中的多个属性显示到网页 import React, { Component } from 'react'; import './App.css'
我有一个 JavaScript 函数,它进行 AJAX 调用以返回一些数据,该调用是在选择列表更改事件上触发的。 我尝试了多种方法来在等待时显示加载程序,因为它当前暂停了选择列表,从客户的 Angul
可能以前问过,但找不到。 我正在用以下形式写很多语句: if (bar.getFoo() != null) { this.foo = bar.getFoo(); } 我想到了三元运算符,但我认
我有一个表单,在将其发送到 PHP 之前我正在执行一些验证 JavaScript,验证后的 JavaScript 函数会发布用户在 中输入的文本。页面底部的标签;然而,此消息显示短暂,然后消失...
我是一名优秀的程序员,十分优秀!