2013-02-27 179 views
1

我有一个xml文件已被转换为下面列出的json。我一直试图找出如何从每个属性中检索-Name和-Value,但没有运气。我猜我需要创建一个等于jsonobj.Media.Attribute [i]的子对象,但是一旦我这样做了,我就无法访问-Name或-Value。有什么建议么?从JSON对象检索值

jsonobj= { 
     "Media": { 
      "Attribute": [ 
       { 
       "-Name": "Keywords", 
       "-Value": "keyword value" 
       }, 
       { 
       "-Name": "Title", 
       "-Value": "title value" 
       }, 
       { 
       "-Name": "Description", 
       "-Value": "description value" 
       }, 
       { 
       "-Name": "Author", 
       "-Value": "author value" 
       }, 
       { 
       "-Name": "Copyright", 
       "-Value": "copyright value" 
       } 
      ] 
      } 
     }; 
+1

提示:您可以使用'['-Name']'来访问对象的元素。 – 2013-02-27 19:25:53

+0

迭代jsonobj.Media.Attribute并使用['-Name']检索值。 – Derek 2013-02-27 19:28:05

+0

我创建了一个子对象并试图使用子对象[0] .Name(返回undefined)来访问它。我已经尝试了子对象[0] .-名称(抛出一个错误),如果我只是在subobj上做一个console.debug,我得到对象{-Name:“关键字”, - 值:“关键字值”}。我似乎无法从中得到任何其他东西。 – user1549568 2013-02-27 19:29:17

回答

2

这会提醒你正在寻找的值:

var list = jsonobj.Media.Attribute 
for(index in list) 
{ 
    var obj = list[index]; 
    var name = obj["-Name"]; 
    var value = obj["-Value"]; 

    alert(name); 
    alert(value); 
} 
+0

非常好!谢谢。一旦我看到代码,很清楚发生了什么。 – user1549568 2013-02-27 19:37:48

1

迭代jsonobj.Media.Attribute和使用[ '杂牌']检索值

for(var i = 0; i < jsonobj.Media.Attribute.length ; i++) 
{ 
var attr = jsonobj.Media.Attribute[i] 
alert(attr["-Name"]); 
alert(attr["-Value"]); 
} 
0

您不能在代码中使用-,因为它是一个操作符,并且JS不会将其识别为方法。

要解决您的问题,您可以使用其他方式访问属性。

否则,代码: jsonobj.Media.Attribute[i].-Name

您可以使用: jsonobj.Media.Attribute[i].["-Name"]

什么是调用相同,对于一个例子: jsonobj.["Media"].Attribute[i].["-Name"]

0

它无法识别的关键属性。说不能读取未定义的属性'属性'。