迭代特定元素的JSON数据 - 与XPath类似

时间:2012-05-30 15:20:08

标签: javascript jquery arrays json xpath

我正在研究嵌入式系统,我的整个过程理论遵循以下方法: 1.向后端发送命令,询问JSON格式的帐户信息。 2.后端写入一个包含所有帐户和相关信息的JSON文件(可能有0到16个帐户)。 3.这就是我遇到的问题 - 使用JavaScript(我们使用JQuery库)迭代特定元素(类似于XPath)的返回信息,并根据填充下拉列表的元素数量构建数组框以选择您要查看的帐户,然后使用帐户信息执行操作。 所以我的代码看起来像这样:

loadAccounts = function() 
{
   $.getJSON('/info?q=voip.accounts[]', function(result) 
   {
            var sipAcnts = $("#sipacnts");
            $(sipAcnts).empty(); // empty the dropdown (if necessarry)
            // Get the 'label' element and stick it in an array
// build the array and append it to the sipAcnts dropdown
// use array index to ref the accounts info and do stuff with it
}

所以我需要的是用于构建voip.accounts.label数组的XPath的JSON版本。 第一个帐户信息如下所示:

{
    "result_set": {
          "voip.accounts[0]": {
                     "label": "Dispatch1",
                     "enabled": true,
                     "user": "1234",
                     "name": "Jane Doe",
                     "type": "sip",
                     "sip": {
                            "lots and lots of stuff":
                            },
                     }
                  }
} 

我是否使问题复杂化?任何人都可以抛弃的任何智慧将不胜感激。

1 个答案:

答案 0 :(得分:1)

有几种选择。一种是使用JsonPath创建的this guy。它打算成为JSON的XPath。我不知道它的效果如何。它当然不是标准化的。虽然这不是很多代码,但它应该易于理解和适应。另一种方法是使用JPath。这两个都来自json.org。我不怀疑还有更多这样的实现。

另一个选项是将JSON转换为javascript对象,并在内容中搜索对象属性,直到找到所需内容。你可以用例如Douglas Crockford的JSON parser