gpt4 book ai didi

java - 如何在 android 中创建这个嵌套的 JSON 对象并在 c# 中对其进行解码?

转载 作者:行者123 更新时间:2023-11-30 01:49:03 25 4
gpt4 key购买 nike

在过去的几个小时里,我一直在努力解决这个问题,尽管我很接近,但我的想法似乎只是让它变得越来越复杂,所以我认为我应该寻求帮助。

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com