2014-01-23 2 views
0

У меня возникла проблема получения правильного результата при «озвучивании» сложного объекта JSON. , например:JavaScript DEEP stringify

{ 
    "a": "a", 
    "b": [ 
    [ 
     { 
     "c": "c", 
     "d": "d", 
     "e": "e" 
     }, 
     { 
     "c": "c", 
     "d": "d", 
     "e": "e" 
     }, 
     { 
     "c": "c", 
     "d": "d", 
     "e": "e" 
     } 
    ], 
    [{ 
     "c": "c", 
     "d": "d", 
     "e": "e" 
     }], 
    [ 
     { 
     "c": "c", 
     "d": "d", 
     "e": "e" 
     }, 
     { 
     "c": "c", 
     "d": "d", 
     "e": "e" 
     } 
    ] 
    ], 
    "f": [ 
    { 
     "g": "g", 
     "h": "h" 
    }, 
    { 
     "g": "g", 
     "h": "h" 
    }, 
    {"g": "g"} 
    ] 
} 

В приведенном выше примере, a и даже f stringify большой, но я хочу «потерять» содержание ценности b (stringify, как пустой массив) Из того, что я читал, если есть более одного уровня в глубине JSON существует необходимость сделать глубокий стриптиз, но я не могу найти правильный путь для просмотра содержимого ключа b.

У кого-нибудь есть идея о том, как это сделать?

p.s. узлы могут иметь даже 3 или более уровней в глубину, а не один или два.

Спасибо

Обновления: Я нашел эту проблему, я использую $ .tmpl и по какой-то причине, в некоторых случаях я получаю что-то вроде ассоциативного массива вместо массива объектов (я знаю, что есть нет такой вещи, как ассоциативный массив в JS, но это то, что я получаю, массив размером 0 с парами ключ-значение внутри него, а не ОБЪЕКТ) в значении «b» на втором уровне. Stringify делает то, что я ожидал от него сейчас. Спасибо

+2

Я не знаю, где вы это читаете. 'JSON.stringify' должен обрабатывать все уровни. Можете ли вы показать, что вы получаете, и указать, где вы что-то теряете? – Barmar

+0

Каковы значения a, c, d, e, g и h перед этим присваиванием? –

+1

Прекрасно работает для меня: http://jsfiddle.net/barmar/kEf82/3/ – Barmar

ответ

1

см.: Why doesn't JSON.stringify display object properties that are functions? В ответе показано, какие значения допустимы. «undefined» не является одним из них. Как указано в комментариях, значения undefined будут отсутствовать при использовании stringify.

+0

Спасибо, вы заставили меня снова изучить код и результаты, и я нашел проблему (написал об этом в обновлении), теперь Мне просто нужно выяснить, почему это происходит. 10x – Erez

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