2010-11-20 3 views
0

Я ищу, чтобы получить структуру объекта JSON без предопределенного знания того, что он может содержать. Для того, чтобы разработать, я мог бы датьДекодирование JSON с неизвестной структурой

[{"x":0,"y":0.4991088274400681,"z":7.489443555361306}, {"x":0,"y":0.7991088274400681,"z":7.489343555361306},{"x":0,"y":0.5991088274400681,"z":7.482445555361306}] 

или даже что-то сумасшедший, как:

'AL': {name:'Alabama', landarea:131426, waterarea:4338, population:[3525342,4243844]}, 
'AK': {name:'Alaska', landarea:1418400, waterarea:234324, population:[43230943,43230943]} 

Другими словами, я понятия не имею, какой формат JSON я собираюсь получить, но я бы как знать, что в первом есть x, y и z со связанным значением или AL, AK и имя, landarea, waterarea и массив популяций во втором.

Это похоже на получение заголовков столбцов в excel. Я знаю, что будет повторяющаяся структура.

Это единственный способ проанализировать это с помощью JSON_decode, а затем выполнить проверки типаOf, чтобы узнать, есть ли у меня объект/массив/строка? Это кажется довольно неуклюжим.

+3

Я бы попросил новый api, он не должен возвращать вам два разных набора данных для одного запроса. – mpapis

+0

Это не то, что api возвращает разные наборы данных, это просто, быть в разных форматах. Я знаю, немного опасно. – Rio

ответ

3

Собственная функция декодирования JSON на основе браузера может обрабатывать любые хорошо сформированные JSON. То, что вы хотите, это функция, которая может понимать декодированный JSON. Это невозможно, по крайней мере, не тогда, когда у вас нет абсолютно никакого знания или способа обработки данных. Однако, если все, что вы хотите знать, это тип данных для каждого компонента, то typeof будет работать нормально.

+0

согласился - json_decode уже говорит вам, что свойство x имеет массив y элементов, например .. он неявный. Кажется, что ОП пытается собрать лишнее семантическое значение, и нет никакого способа сделать это без * некоторых * предварительных знаний. – Hamish

+1

Спасибо. По крайней мере, я могу продолжать, не беспокоясь слишком много, что я пытаюсь изобрести колесо. – Rio

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