我对编程很陌生,我一直在谷歌搜索,但找不到我正在寻找的东西。
好吧我发送了一个ajax的请求,我得到类似的响应(原来的json要复杂得多)
{
"shelf": {
"genre": {
"title1": {
"date": "date",
"author": "name",
"featured": "N"
}
"title2": {
"date": "date",
"author": "name",
"featured": "Y"
}}}
现在我需要找一本特色的“书”。所以我一直在寻找一种方法来寻找特色= Y并在这种情况下得到它的标题“title2”。
我能弄清楚的最好的方法是,当我创建json(在php中)某些东西时,我可以创建一个新的密钥=>与“货架”相同的价值
"shelf": {
"genre": {
"title1": {
/.../
}
"title2": {
/.../
}}}
"featured": {
"genre": "featuredTitle"
"genre2":"featuredTitle2"
}}}
然后在javascript中访问它:
response.featured['genre'];
然后转到
获取所有数据response.shelf.genre.title
但必须有更好的方法来做到这一点......当json非常复杂时,这会非常混乱。
谢谢, 汤姆
答案 0 :(得分:1)
几乎就在那里。您可以非常轻松地遍历JSON对象,JSON是一种非常友好的格式。
var genres = response.shelf.genre;
for (title in genres) {
if (genres.hasOwnProperty(item)) {
var bookTitle = title;
var featured = genres[title].featured;
}
}
hasOwnProperty
是循环访问JSON对象时应始终使用的安全功能。你可以找到more about it here。
JSON完全由Javascript对象和数组组成,其中一个或另一个。因此,即使堆栈很复杂,您也可以通过遍历对象或数组来解析它,只要您知道JSON的结构,就很容易解析。
// Objects:
myJSON.subObject.anotherSubobject.andAnotherOne;
// Arrays:
myJSON[0]; // accesses first item in array...
myJSON.subObject[2]; // accesses third item in the subObject array.