2014-10-20 3 views
1

Я новичок в JSON, node.js и javascript ... У меня есть небольшой узел node.js, который извлекает объект JSON (с именем weatherData ниже) из openweathermap.org, и я пытаюсь сделать его отображающим только определенной части объекта JSON (раздел «temp»). До сих пор я использовал:Как получить конкретный раздел JSON в строку?

var tempString = JSON.stringify(weatherData); 

И тогда я использовал поиск и подстроки методу строки, чтобы получить мою информацию, но там должен быть более простым способом правильно? Как мне отображать только временный раздел без использования строковых методов?

EDIT: Когда я stringify все это я получаю это

"{\" коорд \ ": {\" долгота \ ": - 75,7, \" Lat \ ": 45,41}, \" SYS \ ": {\" типа \ ": 3, \" идентификатор \ ": 119304, \" сообщение \ ": 0,0297, \" страна \ ": \" CA \», \ "восход \": 1413804390 \ "sunset \": 1413842906}, \ "weather \": [{\ "id \": 802, \ "main \": \ "Clouds \", \ "description \": \ "разбросанные облака \", \ "icon \": \ "03n \"}], \ "base \": \ "cmc станции \", \ "main \": {\ "temp \": 273.05, \ "влажность \": 84 \ "давление \": 1012.188, \ "temp_min \": 273,05, \ "temp_max \": 273,05}, \ "ветер \": {\ "скорость \": 1,11, \ "град \": 260,506}, \ "дождь \": {\ "3h \": 0}, \ "облака \": {\ "все \": 44}, \ "дт \": 1413780770 \ "идентификатор \": 6094817, \» name \ ": \" Оттава \ ", \" cod \ ": 200} \ n"

+1

Почему вы не делаете 'JSON.stringify (weatherData.temp);'? – thefourtheye

+1

Это полностью назад. У вас есть данные в форме объекта javascript, где вы можете напрямую обращаться ко всем частям. Вы НЕ хотите его укорачивать и превращать в охоту на пасхальные яйца, чтобы найти то, что хотите. Покажите нам, как выглядят данные JSON, и укажите именно то, что вы хотите получить из данных. – jfriend00

+0

Я пробовал это, но он печатает "undefined". Я думал, что это может быть потому, что на самом деле это не называется temp, но если я напечатаю весь JSON, он отобразит что-то вроде этого: {\ "temp \": 273.05, \ "влажность \": 84, \ "pressure \": 1012.188 \ "temp_min \": 273,05, \ "temp_max \": 273,05}, \ "ветер \": {\ "скорость \": 1,11, \ "град \": 260,506}, \ "дождь \": {\ "3h \": 0}, \ "облака \": {\ "все \": 44}, \ "дт \": 1413780770 \ "идентификатор \": 6094817, \ "имя \": \ "Оттавы \ ", \" cod \ ": 200} \ n" – user2997154

ответ

2

JSON уже родной объект Javascipt, но weatherData.temp является undefined, потому что это не один из свойств объекта. То, что вы хотите вложен под main:

weatherData.main.temp // 273.05 

Поскольку вы упоминаете вы новичок в JS/Node, это может быть полезно знать о console.log() и util.inspect(). Вы можете вывести объект на консоль, чтобы проверить его структуру с помощью этих инструментов.

+0

Делает смысл. Большое спасибо! – user2997154

+0

Для того, что стоит, различие между JSON (Javascript Object Notation) и реальными объектами в Javascript может смущать новичков. JSON - это текстовый формат обмена данными, который очень похож на то, что есть в JS, известном как объектный литерал. В основном это отличается только тем, что имеет слегка ограниченный синтаксис. Но большинство инструментов, которые импортируют данные JSON из API, будут анализировать JSON для вас; вы получите обычный объект обратно. То, что вы получаете, больше не JSON, это просто * было * JSON и * может быть * JSON снова. – Semicolon

0

Вы пробовали?

var result = JSON.stringify(weatherData.temp); 
+0

Да, я сделал, но я не знаю, когда я это сделаю. Я опубликовал результат, когда я строю весь JSON в своем OP. – user2997154

+0

hmmm .... JSON.stringify (weatherData.main.temp); Вы должны получить доступ к каждому собственность в порядке сверху вниз, как спускаться по лестнице. Например: если вы хотите получить доступ к c в файле a.b.c, вам нужно написать всю вещь a.b.c, но не a.c. –

1

Его уже есть в формате JSON, вам не нужно его преобразовывать в строку.

Вы можете получить доступ к разделу «Темп» непосредственно с помощью weatherData.temp