2013-10-15 4 views
0

Мой JSON является:массив JSON в JavaScript

[ 
    { 
     "_id":{ 
     "time":1381823399000, 
     "new":false, 
     "timeSecond":1381823399, 
     "machine":263168773, 
     "inc":-649466399 
     }, 
     "asset":"RO2550AS1", 
     "Salt Rejection":"90%", 
     "Salt Passage":"10%", 
     "Recovery":"59%", 
     "Concentration Factor":"2.43", 
     "status":"critical", 
     "Flow Alarm":"High Flow" 
    }, 
    [ 
     { 
     "Estimated Cost":"USD 15", 
     "AssetName":"RO2500AS1", 
     "Description":"Pump Maintenance", 
     "Index":"1", 
     "Type":"Service", 
     "DeadLine":"13 November 2013" 
     }, 
     { 
     "Estimated Cost":"USD 35", 
     "AssetName":"RO2500AS1", 
     "Description":"Heat Sensor", 
     "Index":"2", 
     "Type":"Replacement", 
     "DeadLine":"26 November 2013" 
     }, 
     { 
     "Estimated Cost":"USD 35", 
     "AssetName":"RO2550AS1", 
     "Description":"Heat Sensor", 
     "Index":"3", 
     "Type":"Replacement", 
     "DeadLine":"26 November 2013" 
     }, 
     { 
     "Estimated Cost":"USD 15", 
     "AssetName":"RO2550AS1", 
     "Description":"Pump Maintenance", 
     "Index":"4", 
     "Type":"Service", 
     "DeadLine":"13 November 2013" 
     }, 
     { 
     "Estimated Cost":"USD 15", 
     "AssetName":"RO3000AS1", 
     "Description":"Pump Maintenance", 
     "Index":"5", 
     "Type":"Service", 
     "DeadLine":"13 November 2013" 
     }, 
     { 
     "Estimated Cost":"USD 35", 
     "AssetName":"RO3000AS1", 
     "Description":"Heat Sensor", 
     "Index":"6", 
     "Type":"Replacement", 
     "DeadLine":"26 November 2013" 
     } 
    ] 
] 

мне нужно получить к нему доступ в JavaScript.

Следующий код не работает:

var jsonobjstr = JSON.parse(jsonOutput); 
alert ("asset: "+jsonobjstr.asset); 
+0

Что такое 'jsonOutput 'set to? У вас есть сообщения об ошибках, появляющиеся в _console_? –

+0

Это не имеет никакого отношения к« java », тег удален. – ajb

+2

Подсказка: вы передаете Json внутри массива, рассматриваете его как таковой – Jose

ответ

2

В JavaScript

var somename = []; означает новый массив и; var somename = {}; означает новый объект.

Поэтому, если какой-либо json начинается с [], это означает, что это массив объектов, а если он начинается с {}, это объект.

Ваш JSON начинается с [], поэтому это массив объектов, так что вы должны получить доступ к каждому объекту, выполнив:

json[n].asset для каждой позиции массива (где п представляет собой целое число).

НО:

Ваш JSON странно. Похоже, вы всегда будете иметь массив с одним элементом (если это правда, то JSON должен начинаться с {}

LIKE:.

{ 
    "id": 
    { 
     "code":1381823399000 
    }, 
    "asset":"RO2550AS1", 
    "history": 
    [ 
     { 
      "value":"USD 15" 
     }, 
     { 
      "value":"USD 15" 
     }, 
     { 
      "value":"USD 15" 
     } 
    ] 
} 

Здесь вы можете сделать:

thing.id.code 
thing.asset 
thing.history[0].value 
thing.history[1].value 
+0

Я не согласен с вашим *НО* : Он передает массив с 1 объектом, за которым следует другой массив объектов, содержащих единую информацию. – Kiruse

+0

Нечего спорить. Если родительский объект не является массивом, зачем его обрабатывать так? Посмотрите на пример. – lolol

+0

Конечно, есть что не согласиться. В вашем заявлении ничего не говорится о «обертывании» единой информации в отдельном свойстве до вашего редактирования. Без примера, чтобы прояснить ваше намерение, ваше утверждение является просто ложным или, возможно, неполным. Несмотря на это, дебаты противоречат правилам. – Kiruse

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