2013-07-03 2 views
-1

У меня есть JSON, как показано ниже. Как я могу найти длину воздуха в консоли,Найти длину объекта JSON

console.log (block.number.path[i].air.length); 

{ "block": [ 
    { "number": "36", 
     "path": [ 
      { "air": "[{\"name\":\"0\"},{\"name\":\"1\"},{\"name\":\"2\"}]" }, 
      { "water": "[{\"name\":\"3\"},{\"name\":\"4\"},{\"name\":\"5\"}]" }, 
      { "sand": "[{\"name\":\"6\"},{\"username\":\"7\"},{\"name\":\"8\"}]" } 
     ] 
    } 
    ] 
} 
+1

'air' это строка, содержащая JSON. Сначала вы разбираете JSON, чтобы преобразовать его в массив. Кроме того, [нет такого объекта, как «объект JSON»] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/). И «путь» к «воздуху» на самом деле: 'obj.block [0] .path [i] .air'. Если бы я был вами, я бы поставил JSON на правильную структуру для работы. –

+0

Как и вы? Значение воздуха - это строка, а не массив. –

+0

Зачем голосовать? Кажется, stackoverflow только для опытных людей с небольшими проблемами будет downvoted .. :( – usercode

ответ

4

сам air содержит JSON закодированный массив, который вы должны декодировать первый:

// your obj in here 
var obj = { "..." : "..." }; 

// grab the respective length of the "air" attribute 
var air = JSON.parse(obj.block[0].path[0].air); 
console.log(air.length); 

http://jsfiddle.net/pLAny/

+0

По крайней мере, из предоставленного кода 'block' - массив, содержащий объект, поэтому он должен быть' block [0] 'как Ollie, упомянутый в его ответе –

+0

@ t.niese Уже исправлено, что после комментария Феликса Клинга к самому вопросу :-) – Sirko

+1

@usercode Прекрасно работает для меня. Смотрите это [скрипка] (http://jsfiddle.net/pLAny/). – Sirko

2

Вы можете решить эту проблему например:

var length = JSON.parse(block.number.path[i].air).length; 
console.log(length); 
0

Блок представляет собой массив, поэтому вы должны получить доступ к элементу первым:

a.block[0].path[0].air.length 

где a переменный, где вы держите данные.

1

Это похоже на то, что некоторые из этих JSON получили неправильный характер. «воздух», «вода» и «песок» - все массивы JSON ... но разбираются в струны. Если вы тот, кто создает JSON, изучите это, потому что это кажется неправильным. Как указывают другие ответы, он по-прежнему разрешается в Javascript с использованием JSON.parse(), если вы можете быть уверены, что у ваших целевых браузеров этот интерфейс (самые современные).

Для любого массива JSON (все, что указано с помощью скобок []) вы можете проверить его свойство .length.

1

Учитывая, что json переменная, содержащая ваш JSON, вы можете сделать:

json["block"][0]["path"][0]["air"].length 
Смежные вопросы