2013-02-27 7 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']' для доступа к элементам объекта. –

+0

итерация jsonobj.Media.Attribute и использование ['-Name'] для извлечения значения. – Derek

+0

Я создал подобъект и попытался получить к нему доступ, используя подобъект [0] .Name (возвращает undefined). Я пробовал подобъект [0] .- Name (выдает ошибку). Если я просто делаю console.debug на subobj, я получаю Object {-Name: "Keywords", -Value: "keyword value"}. Кажется, я ничего не могу извлечь из этого. – user1549568

ответ

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

1

итерацию jsonobj.Media.Attribute и использовать [ '-Name'] для получения значения

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

Он не может определить ключевой атрибут. Говорит, что не может прочитать свойство «Атрибут» неопределенного.

Смежные вопросы