获取JSON标记内的所有JSON实例(JAVASCRIPT)

时间:2013-12-12 06:01:00

标签: javascript jquery json

假设我有一个类似以下的JSON:

   {
  "filestore": {
    "root": {
      "abc": {
        "def": {
          "wavs": {
            "wav": [
              {
                "id": "1",
                "file": "\\abc\\def\\a.wav",
                "checked": "false"
              },
              {
                "id": "2",
                "file": "\\abc\\def\\b.wav",
                "checked": "false"
              },
              {
                "id": "3",
                "file": "\\abc\\def\\c.wav",
                "checked": "false"
              }
            ]
          }
        },
        "ghi": {
          "wavs": {
            "wav": [
              {
                "id": "1",
                "file": "\\abc\\ghi\\a.wav",
                "checked": "false"
              },
              {
                "id": "2",
                "file": "\\abc\\ghi\\b.wav",
                "checked": "false"
              },
              {
                "id": "3",
                "file": "\\abc\\ghi\\c.wav",
                "checked": "false"
              }
            ]
          }
        },
        "wavs": {
          "wav": [
            {
              "id": "4",
              "file": "\\abc\\x.wav",
              "checked": "false"
            },
            {
              "id": "5",
              "file": "\\abc\\y.wav",
              "checked": "false"
            },
            {
              "id": "6",
              "file": "\\abc\\z.wav",
              "checked": "false"
            }
          ]
        }
      },
      "wavs": {
        "wav": [
          {
            "id": "7",
            "file": "p.wav",
            "checked": "false"
          },
          {
            "id": "8",
            "file": "q.wav",
            "checked": "false"
          },
          {
            "id": "9",
            "file": "r.wav",
            "checked": "false"
          }
        ]
      }
    }
  }
}

现在,我想要“root”中的所有实体。我知道我们可以使用JSON.parse在Javascript中创建一个JSON对象,并像filestore.root.abc等一样单独访问它们。

但是,我想要一个可以提取特定标签内所有标签的实用程序。就像,如果我发送该实用程序“filestore.root”,它应该返回一个数组[“abc”,“wavs”]。同样,如果我发送“filestore.root.abc”,它应该返回[“def”,“ghi”,“wavs”]。

这样的东西在Javascript中可能吗?请告诉我。我非常喜欢javascript,但我也对jquery开放。非常感谢。

2 个答案:

答案 0 :(得分:3)

Object.keys(filestore.root);在现代浏览器中返回["abc", "wavs"]。检查这个相关的SO答案:https://stackoverflow.com/a/208020/2193252

答案 1 :(得分:0)

如果你喜欢DIY我正在使用这个

var result = [];
for (var key in filestore.root) result.push(key);       
alert(JSON.stringify(result));