我有一个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的新手,任何对此的帮助对我来说都非常有用。
答案 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"