json - 寻找价值和关键

时间:2014-01-04 18:13:14

标签: javascript arrays json

我对编程很陌生,我一直在谷歌搜索,但找不到我正在寻找的东西。

好吧我发送了一个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非常复杂时,这会非常混乱。

谢谢, 汤姆

1 个答案:

答案 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的更多信息

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.