2015-05-02 4 views
0

У меня есть базовый сценарий Node.js, который создает массив JSON из нескольких переменных и других массивов. Однако, всякий раз, когда я вызываю myJSON.title в своем коде, он вообще не работает. Это дает неопределенный. Может ли кто-нибудь помочь мне?Проблема с неопределенной переменной JSON

for (var i = 0; i < route.length; i++) { 

    var item = { 
    "title": title[i], 
    "date": date[i], 
    "summary": summary[i], 
    "route": route[i], 
    "pebbleid": "geoquery-" + timegreeting + route[i] 
    }; 

    myarray.push(item); 
    for (var i = 0; i < route.length; i++) { 

    var item = { 
     "title": title[i], 
     "date": date[i], 
     "summary": summary[i], 
     "route": route[i], 
     "pebbleid": "geoquery-" + timegreeting + route[i] 
    }; 

    myarray.push(item); 
    } 

    myJSON = JSON.stringify({delays: myarray}); 

    console.log(myJSON); 
} 
+0

Можете ли вы показать вывод 'console.log (myJSON)' –

+0

Несомненно, никаких проблем, я добавлю его сейчас – AgentSpyname

+0

И у вас есть myJSON, определенный вне вашего цикла for? –

ответ

4

Причина myJSON.title не определено, что JSON.stringify возвращает строку, и строки не имеют title свойство.

Объект, представленный строкой JSON myJSON, имеет одно свойство, delays, (потому что это то, что вы положили в JSON.stringify). Значением этого свойства является массив. Каждый элемент этого массива является объектом, который имеет свойство titledate, summary и т. Д.). Итак, чтобы получить какой-либо один title, вам сначала нужно получить массив delays, а затем получить один из его элементов по индексу, а затем получить свойство этого элемента title.

Так, например, 0-й элемент в delays, вы могли бы сделать это:

obj.delays[0].title 

Я использовал «obj», потому что это не будет работать с myJSON, потому что, как я уже говорил, в коде вы показали myJSON является JSON строка, а не объект JavaScript, и поэтому не имеет свойства delays.

+1

@AgentSpyname - Это Ссылка Mozilla может помочь лучше понять концепции: [Работа с объектами] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects). – Roberto

+0

Большое вам спасибо за помощь. Я новичок в JSON, и это был простой и ясный ответ на мое довольно грязное решение. Принято точно – AgentSpyname

+1

@Robert Спасибо за ресурс тоже – AgentSpyname

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