我如何迭代以下格式的JSON中的images
?收集的长度为images
可以是任意的。我可以操纵它使其成为一个列表,或者我有什么选择来解析它?如何解析JSON并迭代它?
images: {
0: {
filename: "image1.jpg"
},
1: {
filename: "image2.jpg"
},
2: {
filename: "image3.jpg"
},
}
我如何迭代以下格式的JSON中的images
?收集的长度为images
可以是任意的。我可以操纵它使其成为一个列表,或者我有什么选择来解析它?如何解析JSON并迭代它?
images: {
0: {
filename: "image1.jpg"
},
1: {
filename: "image2.jpg"
},
2: {
filename: "image3.jpg"
},
}
一个可能的解决办法是创建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
}
如果你有this SO question读,你会发现JSON.NET
是推荐图书馆使用情况喜欢这个。
你可以尝试使用DataContractJsonSerializer
从JSON输入创建对象,但是当我刚刚尝试时,我无法使它与JSON字符串中的项目集合一起工作。
你可以用香草做的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>
我最后想出来的 - 虽然可能不是最好的做法它在这种情况下工作
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);
}
你的json看起来很奇怪。图像不应该是一个数组而不是一个对象? –
是的,返回的数据是非常奇怪的,有时它是作为数组返回的,但有时它不是,我正在处理它的逻辑 – Madhatter5501