如何使用jquery解析Json

时间:2012-02-23 06:58:35

标签: jquery json

我有一个Json数组,如下所示

 {
 "Level":{
      "@attributes":
        {
                "value":"","type":"RelyingParty","others":"false","id":"1"
        }
     },
   "Role":{
     "@attributes":
              {
             "uuid":"838f7ee2-f11c-48f9-887f-8e485b74169b","type":"ADMIN"
              }
     },
   "Timeline":"2012",
   "Timezone":"GMT+330"
  }

如何使用jquery解析上述json数据并将其存储在javascript数组中。因为我是json的新手,任何对此的帮助对我来说都非常有用。

1 个答案:

答案 0 :(得分:2)

您引用的内容不是有效的JSON,即使进行了少量修改,它也不会是数组。我怀疑你只是指“对象”(例如,PHP称为关联数组;实际上它是一个映射)。您引用的内容看起来像是JSON对象定义的 part ,但它缺少初始{

jQuery为此目的提供了jQuery.parseJSON

var x = jQuery.parseJSON(strContainingJSON);

所以添加前导{,这里是:

str = '{' +
      '    "Level": {' +
      '        "@attributes": {' +
      '            "value": "",' +
      '            "type": "RelyingParty",' +
      '            "others": "false",' +
      '            "id": "1"' +
      '        }' +
      '    },' +
      '    "Role": {' +
      '        "@attributes": {' +
      '            "uuid": "838f7ee2-f11c-48f9-887f-8e485b74169b",' +
      '            "type": "ADMIN"' +
      '        }' +
      '    },' +
      '    "Timeline": "2012",' +
      '    "Timezone": "GMT+330"' +
      '}';
var x = jQuery.parseJSON(str);
console.log(x.Timeline); // "2012"

当然,您可能从其他地方获取str(从ajax或其他东西加载),而不是直接在字符串中,如上所述,但最终结果是相同的。另请注意,如果 使用ajax加载JSON,如果它使用正确的MIME类型jQuery will parse it automatically提供,然后将您的ajax success函数交给生成的对象。

如果你真的想要一个数组(有序列表),请将[放在开头,将]放在最后,创建一个包含该对象的单项数组:

str = '[' +
      '    {' +
      '        "Level": {' +
      '            "@attributes": {' +
      '                "value": "",' +
      '                "type": "RelyingParty",' +
      '                "others": "false",' +
      '                "id": "1"' +
      '            }' +
      '        },' +
      '        "Role": {' +
      '            "@attributes": {' +
      '                "uuid": "838f7ee2-f11c-48f9-887f-8e485b74169b",' +
      '                "type": "ADMIN"' +
      '            }' +
      '        },' +
      '        "Timeline": "2012",' +
      '        "Timezone": "GMT+330"' +
      '    }' +
      ']';
var x = jQuery.parseJSON(str);
console.log(x[0].Timeline); // "2012"