2014-12-05 4 views
0

Я ссылка на этот пост Access/process (nested) objects, arrays or JSON, ставить не были удачи в выяснении это:Json Синтаксического Вложенный массив

я это JSON, что я получаю от запроса HTTP: и в моем приложении мне нужен спрашивает объект Posts.

{ 
     "email" : "[email protected]", 
     "username" : "rambo", 
     "fullname" : "Michael Stalone", 
     "posts" : [ 
       { "username" : "Bad Man", 
        "comments" : 
         [ 
         { "com_user" : "michael", "com_post" : "good stuff" }, 
         { "com_user" : "alex", "com_post" : "hell yes" } 
         ] 
        }, 
        { "username" : "CheckerTats", 
        "comments" : [ 
          { "com_user" : "basky", "com_post" : "wow awesome" } 
         ] 
        } 
       ] 
     } 

Я понимаю, как все должно быть. Я также замечаю, что возвращает и объект массива, поэтому я индексирую varriable, я его назначаю: var items = data [0]. console.log (данные [0]) показывает, что это:

{ 
"email":"[email protected]", 
"username":"rambo", 
    "fullname":"Michael Stalone", 
    "posts":["[object Object]","[object Object]"] 
} 

Так что это все хорошо и денди, и понимаю, что мне нужно сделать шаг дальше и исследовать данные [0] [ «сообщения»] [0] который отображается как:

[object Object] 

Теперь я почти уверен, что это первый объект сообщения. Я думаю, что данные [0] ['posts'] [0] ['username'] дадут мне это конкретное имя пользователя. Хуже того, моя среда для разработчиков - приложение iOS Apache Cordova, поэтому, когда я запускаю console.log, я ничего не возвращаю. Я назначил это переменным, использует stringify, dot notation и по-прежнему постоянно не могу получить доступ к этому объект. Мне нужно сделать это, чтобы присвоить ему угловую переменную области.

EDIT:

Новый журнал теперь возвращается неопределенным:

var items = dat[0]['posts'][0]; 
console.log(items['username']); // undefined 
+0

Вы использовали console.dir() вместо console.log()? показывает ли что-нибудь другое? Кроме того, что такое бэкэнд? есть ли у вас перехват http? Единственное, о чем я могу думать в данный момент, если вы не можете развернуть эти объекты с помощью console.dir(), так это то, что на этих объектах где-то в процессе есть JSON.toString (not stringify()) , Кажется непохожим, но ?? – Beartums

+0

В вашем журнале есть дополнительные символы ',' 'после' fullname'. Это не может быть объект. Где и как вы создали этот JSON? – Epsilon

+0

@Beartums Я использовал console.dir(), и он ответил так же. , прямо сейчас мой бэкенд - NodeJS, и я использую последнюю схему moongoose http://mongoosejs.com/docs/guide.html для синтаксического анализа. Но первый json, указанный в списке, является именно json в базе данных MongoDB. Поэтому я не вижу, как это происходит может измениться – rambossa

ответ

3

взгляд внимательно на данных [0]: сообщения содержит массив из двух строк, которые говорят «[объект Object ] ", а не два объекта. Как вы разбираете json?

о, и ваш синтаксис является правильным для извлечения имени пользователя из вложенных объектов

+0

Мое предположение, что он вызывает 'toString' где-то на каждом фактическом объекте post. – Vinay

+0

Андрас ты был прав, я создам ответ с объяснением – rambossa

+0

ЭТО был правильный ответ. В моем mongoDB я помнил, что вручную ввел то, что, как я думал, было правильным, в мой массив «posts» в этом JSON. Все выглядели хорошо в mongoDB (как я писал в моем вопросе), однако, полагаю, вручную вводя, я не написал синтаксис справа. – rambossa

0

если переменная dat держит ваш объект JSON. Затем вы можете попробовать использовать код ниже, чтобы получить доступ к имени пользователя в json:

dat.posts[0].username 
+1

Вы даже прочитали сообщение? – Epsilon

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