我有這樣的服務器上的JSON庫存inventory.json
:從網絡如何解析JSON數據來得更快
[ { "body" : "SUV",
"color" : { "ext" : "White diamond pearl",
"int" : "Taupe"
},
"id" : "276181",
"make" : "Acura",
"miles" : 35949,
"model" : "RDX",
"pic" : [ { "full" : "http://images1.dealercp.com/90961/000JNBD/001_0292.jpg" } ],
"power" : { "drive" : "Front wheel drive",
"eng" : "2.3L DOHC PGM-FI 16-VALVE",
"trans" : "Automatic"
},
"price" : { "net" : 29488 },
"stock" : "6942",
"trim" : "AWD 4dr Tech Pkg SUV",
"vin" : "5J8TB2H53BA000334",
"year" : 2011
},
{ "body" : "Sedan",
"color" : { "ext" : "Premium white pearl",
"int" : "Taupe"
},
"id" : "275622",
"make" : "Acura",
"miles" : 40923,
"model" : "TSX",
"pic" : [ { "full" : "http://images1.dealercp.com/90961/000JMC6/001_1765.jpg" } ],
"power" : { "drive" : "Front wheel drive",
"eng" : "2.4L L4 MPI DOHC 16V",
"trans" : "Automatic"
},
"price" : { "net" : 22288 },
"stock" : "6945",
"trim" : "4dr Sdn I4 Auto Sedan",
"vin" : "JH4CU2F66AC011933",
"year" : 2010
} ]
這裏有兩個指標,有這樣幾乎5000
指數。 我解析此JSON是這樣的:
var url = "inventory/inventory.json";
$.getJSON(url, function(data){
$.each(data, function(index, item){ //straight-forward loop
if(item.year == 2012) {
$('#desc').append(item.make + ' ' + item.model + ' ' + '<br/>' + item.price.net + '<br/>' + item.pic[0].full);
}
});
});
這是工作fine.But的問題是,這個搜索和提取過程有點慢,因爲有5000個指數已經和它的與日俱增。看來,這是一個直接循環來解析數據和一個正常的brute-force method
。
現在我想知道是否有任何時間有效的方法來解析更快。任何更快的方法來解析而不是直接循環?
考慮按年份組織您的數據。然後,您可以執行'data [2012]'並獲取2012年的所有項目,而無需迭代不必要的項目。 – Blender
減少發送到瀏覽器的數據量。使用Ajax動態請求所需的信息,而不是檢索它們可能需要的所有信息。 –