如何以下列格式的JSON迭代images
? images
集合的长度可以是任意的。我可以操纵它使它成为一个列表,或者我有什么选择来解析它?
images: {
0: {
filename: "image1.jpg"
},
1: {
filename: "image2.jpg"
},
2: {
filename: "image3.jpg"
},
}
答案 0 :(得分:1)
一种可能的解决方案是创建json的dynamic
表示形式:
dynamic jsonData = JsonConvert.DeserializeObject(@"{
images: {
0: {
filename: ""image1.jpg""
},
1: {
filename: ""image2.jpg""
},
2: {
filename: ""image3.jpg""
}
}
}");
foreach(var item in jsonData["images"])
{
//Do something
}
答案 1 :(得分:1)
如果您阅读this SO question,则会注意到JSON.NET
是推荐用于此类情况的库。
您可以尝试使用DataContractJsonSerializer
从JSON输入创建对象,但是当我刚才尝试时,我无法使用JSON字符串中的一组项目。
答案 2 :(得分:1)
您可以使用这样的vanilla javascript执行此操作:
for (objectName in data["images"]) {
html += data["images"][objectName]["filename"] + "<br />"
}
下面的完整HTML文件示例
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div id="result"></div>
<script type="text/javascript">
var data = {
"images": {
"0": {
"filename": "image1.jpg"
},
"1": {
"filename": "image2.jpg"
},
"2": {
"filename": "image3.jpg"
}
}};
var html = '';
for (objectName in data["images"]) {
html += data["images"][objectName]["filename"] + "<br />"
}
document.getElementById("result").innerHTML = html;
</script>
</body>
</html>
答案 3 :(得分:1)
我最终搞清楚了 - 虽然可能不是最好的做法,但在这种情况下它起作用
var imageHoldingList = new List<VehicleImagesModel>();
var connectionResponse = JsonConvert.DeserializeObject<dynamic>(results);
var jImage = connectionResponse["response"]["vehicles"]["images"].Children();
foreach (var image in jImage)
{
var h = new VehicleImagesModel
{
Filename = image.First.filename.ToString(),
Caption = image.First.caption.ToString()
};
imageHoldingList.Add(h);
}