У меня есть следующие JSON строка:Перебора JSON результатов с JQuery
{
"responseHeader":{
"status":0,
"QTime":2,
"params":{
"facet":"false",
"fl":"id,title,friendlyurl,avatar,locpath,objectid,objecttype",
"indent":"off",
"q":"title_search:*castle*",
"wt":"json",
"fq":"userid:\"C325D42C-A777-4275-BDD2-D7810A8AB9AB\"",
"defType":"lucene"
}
},
"response":{
"numFound":2,
"start":0,
"docs":[
{
"title":"castle a",
"objecttype":1,
"friendlyurl":"castle-a",
"avatar":"6_887_castle-a.JPG",
"objectid":6
},
{
"title":"castle b",
"objecttype":1,
"friendlyurl":"castle-b",
"avatar":"794_360_13j-castle-by-night.jpg",
"objectid":794
}
]
}
}
Есть 2 результатов поиска в здесь: Замок A и Замок B
Я хочу Переберите все результаты и получить значение атрибутов заголовка, objectype и friendlyurl
для целей тестирования я просто присвоенный строку JSON для «данные» переменной затем я попробовал:
for (var i = 0, l = data.items.length; i < l; i++) {
console.log(data.items[i].title);
console.log(data.items[i].objecttype);
console.log(data.items[i].friendlyurl);
}
, но затем я получаю: неперехваченным TypeError: Не удается прочитать свойство 'длина' неопределенной
Если я:
data = $.parseJSON(data);
for (var i = 0, l = data.items.length; i < l; i++) {
console.log(data.items[i].title);
console.log(data.items[i].objecttype);
console.log(data.items[i].friendlyurl);
}
я получаю: неперехваченным SyntaxError: Неожиданный маркер C JQuery-1.8.3 .min.js: 2
строка в файле js: e.JSON.parse (t);
Я также попытался:
var data = '{"responseHeader":{"status":0,"QTime":1,"params":{"facet":"false","fl":"id,title,friendlyurl,avatar,locpath,objectid,objecttype","indent":"off","start":"0","q":"title_search:*castle*","wt":"json","fq":"userid:\"C325D42C-A777-4275-BDD2-D7810A8AB9AB\"","rows":"10","defType":"lucene"}},"response":{"numFound":2,"start":0,"docs":[{"title":"castle a","objecttype":1,"friendlyurl":"castle-a","avatar":"6_887_castle-a.JPG","objectid":6},{"title":"castle b","objecttype":1,"friendlyurl":"castle-b","avatar":"794_360_13j-castle-by-night.jpg","objectid":794}]}}'
var result,
size = data.result.docs.length,
index;
for (index = 0; index < size; index++) {
result = data.result.docs[index];
console.log(result.title);
}
но приводит к ошибке: неперехваченным TypeError: Не удается прочитать свойство «документы» из неопределенными.
http://stackoverflow.com/questions/2342371/jquery-loop-on-json-data-using-each – Saturnix
Обратите внимание, что проблема вообще не связана с JSON **. Речь идет о том, как обрабатывать массивы и объекты в JavaScript. * Как * вы получили данные (например, через JSON), не имеют отношения к проблеме. –