我在ajax post請求中收到了一個帶有顯示值的訊息。這個json回應資訊看起來是這樣的:
{}。
"line": {
"name": "Google item",
"影像": {
"元素": {
"order": "1",
"link": "https://google.com/1.jpg",
"name": "1.jpg"
},
"元素": {
"order": "2",
"link": "https://google.com/2.jpg",
"name": "2.jpg"
},
"元素": {
"order": "3",
"link": "https://google.com/3.jpg",
"name": "3.jpg"
},
"元素": {
"order": "4",
"link": "https://google.com/4.jpg",
"name": "4.jpg"
},
"元素": {
"order": "5",
"link": "https://google.com/5.jpg",
"name": "5.jpg"
}
},
"features": {
"元素": {
"name": "1",
"order": "1"
},
"元素": {
"name": "2",
"order": "2"
},
"元素": {
"name": "3",
"order": "3"/span>
},
"元素": {
"name": "4",
"order": "4"
}
},
"purchasing_price": "10",
"selling_price": "20",
"ftp_path": "google/item",
"description": " "
}
}
我是做開發的,對jquery/ajax中的json沒有太多經驗。 我試著這樣做:
function parseContent(content){
$("#name").val(content.line.name) 。
$("#ftp_path").val(content.line.ftp_path)。
$("#html_description").val(content.line.description)。
$("#feature"/span>).remove()。
$.each(content.line.features, function(k, v){
$("#features").append('<input type="text" class="formtrol mt-3" id="feature" value=" ' v. name '" required>')。)
alert(v.name ) 。
});
我的問題是,變數內容只包含最后的圖片和特征元素。但在chrome/network中,我可以看到,完整的資訊已經被接收。
所以我發現有一個決議的問題。決議的JSON只包含最后一個元素。
但是,在我的案例中,我怎樣才能解決這個問題,以迭代所有的元素呢?
uj5u.com熱心網友回復:
JSON規范說:
一個物件中的名字應該是唯一的。
這些物件中的名稱不是。
SHOULD表示:
那就是 在特定的情況下,可能存在有效的理由來忽略一個 但在選擇不同的專案之前,必須了解并仔細權衡其全部影響。
在特定的情況下,可能會有合理的理由忽略某個特定的專案,但在選擇不同的方案之前,必須了解并仔細權衡其全部影響。
這里的含義是,每一個 JSON 決議器(至少在我所知的情況下)都將忽略物件中除一個重復名稱之外的所有值。
如果您真的需要處理這些資料,那么您將不得不追蹤一個能夠處理這些資料的決議器(我不知道有任何決議器),或者撰寫一個能夠處理這些資料的自定義 JSON 決議器(您還需要決定您想要從中生成什么資料結構,因為 JS 也不能在物件中使用重復的屬性名稱)。在npm上有許多JSON決議器,你可能想檢查其源代碼,作為一個起點。
更好的解決方案是改變生成源資料的方法,以產生不違反 SHOULD 要求的合理的格式。例如,用一個陣列來替換重復的屬性名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307640.html
標籤:
上一篇:不會列印出所有的字串
