我如何迭代以下格式的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