2013-05-06 5 views
1

У меня есть динамический объект json, который может содержать различные типы атрибутов и объектов внутри, может иметь строковые строки или даже массивы. Я сделал код javascript, чтобы преобразовать единую структуру JSON в HTML-таблицу, отлично работал, но id хотел сделать это для динамического JSON, так что в принципе мне нужно будет проходить через деревья и дочерние деревья JSON, чтобы посмотреть, как я могу создать эта таблица HTML.таблица html на основе дерева объектов json

Но у меня есть некоторые проблемы при попытке проверить, если у ребенка есть объект внутри, как это: (Я не хочу, чтобы добавить много деталей в формате JSON)

parent: { 
    child_1: { 
     attr1 : value1 
    }, 
    child_2: { 
      [{ attribues and values in an array }] 
    } 
} 

Как я мог добиться этого? Я думал об использовании функции «TYPEOF» как так:

if (typeof key === 'array') { 
    // do something 
}else{ 
    // do another stuff 
} 

Но я не считаю, что это будет хорошо работать, вы, ребята, мне помочь?

Заранее спасибо.

+0

Я думаю, он должен работать нормально. Используйте рекурсивную функцию для создания таблицы. – Barmar

+0

@Barmar Вы можете помочь мне, дав мне пример, пожалуйста? Я тоже думал об этом, так как каждый «массив», который я нахожу, я создам «связующую» строку, чтобы добавить еще всплывающее окно для всех этих данных :( – msqar

+0

Попробуйте написать это самостоятельно, тогда кто-то поможет вам исправить это. не имеют примера, удобного. – Barmar

ответ

2

typeof key === 'array' был верным, так как для массивов typeof вернет "object". Вы можете попробовать использовать вместо instanceof:

if (key instanceof Array) { 
    // do something 
} else { 
    // do another stuff 
} 

Но это не сработает, если ваш JSON был создан в другом кадре. Другим вариантом является проверка toString()

Object.prototype.toString.call(key).indexOf('Array') > 0 

или проверить

Array.isArray(key) 

, но это не поддерживается всеми браузерами.

Описание typeof вы можете увидеть здесь https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof

+0

См. [Здесь] (http://stackoverflow.com/questions/4775722/javascript-check-if-object-is-array) по причинам, почему 'instanceof' не всегда работает. –

+0

Плохой выбор для использования indexOf (« Array »), что, если объект является типизированным массивом, например Int32Array – Xotic750

+0

@ Xotic750 OP упомянул, что исходный объект JSON. Согласно спецификации JSON http://www.json.org/, он может содержат только простые массивы (не напечатаны) – Vadim

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