2013-08-13 4 views
0

Я до сих пор новичок в JSON, поэтому у меня есть, вероятно, очень глупый вопрос. Как мне обратиться к
list.data[0].bom-item.descriptor? Созданное мной предупреждение не работало. Спасибо за помощь.проблема, связанная с массивом JSON

var txt='{"list": {"data": [{"bom-item": {"dmsID": 3949,"bomPath": "3951B3949","workspaceType": 6,"workspaceID": 8,"bomDepthLevel": 1,"quantity": 1,"formattedQuantity": "1.0","descriptor": "500-0059-000 - FCI, P681-C01 SKU77 (900-60681-0077-400) [REV:D]","revision": "D","units": "EA","itemNumber": 1,"assembly": false,"cost": 0,"isPinned": false,"quoteID": 0,"isUsingDefaultQuote": false,"leaf": false,"redlinedCost": -1,"redlineAddition": false,"redlineAgainstVersion": -1,"redlineDeletion": false,"totalWeight": 1,"lifecycleStatus": "Production","hasSourcing": false,"fields": null}}]}}' 



alert(txt.list.data[0].bom-item.descriptor); 
+0

Что происходит, когда вы запускаете это оповещение? –

ответ

1

В вашем текущем коде txt - это просто строка, поэтому он не имеет свойств объекта JSON. Вы должны использовать JSON.parse(), чтобы перевести его в объект JSON (и использовать индексное обозначение, как указано в другой ответ - дефис - является то, что вызывает проблемы):

< yourObj = JSON.parse('{"list": {"data": [{"bom-item": {"dmsID": 3949,"bomPath": "3951B3949","workspaceType": 6,"workspaceID": 8,"bomDepthLevel": 1,"quantity": 1,"formattedQuantity": "1.0","descriptor": "500-0059-000 - FCI, P681-C01 SKU77 (900-60681-0077-400) [REV:D]","revision": "D","units": "EA","itemNumber": 1,"assembly": false,"cost": 0,"isPinned": false,"quoteID": 0,"isUsingDefaultQuote": false,"leaf": false,"redlinedCost": -1,"redlineAddition": false,"redlineAgainstVersion": -1,"redlineDeletion": false,"totalWeight": 1,"lifecycleStatus": "Production","hasSourcing": false,"fields": null}}]}}') 
> [object Object] 
< yourObj.list.data[0]["bom-item"].descriptor 
> "500-0059-000 - FCI, P681-C01 SKU77 (900-60681-0077-400) [REV:D]" 

Информация о JSON объекта at MDN.

+0

Спасибо за быстрый ответ. Задача решена. – user2678968

1

bom-item не является юридическим идентификатором Javascript.

Вместо этого вам нужно использовать индексатор обозначения:

txt.list.data[0]["bom-item"].descriptor 

Или, еще лучше, использовать вместо верблюжьего.

+0

Спасибо за быстрый ответ. Задача решена. – user2678968

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