{"person": "david",
"images":
{"usable_sizes":
[[[150,
41],
"image1.png"],
[[220,
61],
"image2.png"],
[[220,
61],
"image3.png"]],
"uploader": null}}
我在C#中使用JavaScriptSerializer来解析一些JSON。以上是我从webrequest回来的字符串。对字符串调用Deserialize会将Person放在对象中的正确位置,但我不知道嵌套在“images”下的数组使用什么类型。我完全失去了。
这里是相关代码:
TopLevelObject topObj = new JavaScriptSerialize().Deserialize<TopLevelObj>(jsonStream);
public TopLevelObject
{
public string person;
public imgStruct images;
}
public class imgStructure
{
public List<string[,][]> available_sizes;
}
但是没有采取。我已经为该类尝试了各种其他形式,但是如果没有正确的密钥,则无法进行反序列化以放入数据。我无法更改入站JSON,因为我正在从第三方使用它。
答案 0 :(得分:2)
这就是我认为你的课程应该是这样的:
public class RootObj
{
public string person;
public ImageDataObj images;
}
public class ImageDataObj
{
public object uploader;
public List<List<object>> usable_sizes
}
如您所见,内部列表是一个对象列表。这是因为列表具有不同类型的项目:一个是列表(数字数据[150,41]),另一个是字符串(图像名称)。由于这个原因,我认为你不能强烈输入内部列表。 也许值得在运行时(使用VS调试工具)检查内部列表中对象的结构,这可以指示如何映射它。
如果你接受了详细信息,那easy_images属性类型的外观如下:
public List<List<Dictionary<List<int>,string>>> usable_sizes
但这只是猜测。
答案 1 :(得分:0)
我建议前往JSON.org并使用其中一个预先构建的解决方案。