Как присоединиться к элементу ответа Json - PullRequest
0 голосов
/ 25 сентября 2018

Я звоню в OpenWeatherApi и сталкиваюсь с дилеммой.Я тяну ответ, но нужны только конкретные элементы данных.Я успешно вытягиваю определенные элементы, но у меня возникают проблемы с вытягиванием элемента CITY .

Это ответ от вызова API:

{
"coord": {
    "lon": -122.4,
    "lat": 45.64
},
"weather": [
    {
        "id": 800,
        "main": "Clear",
        "description": "clear sky",
        "icon": "01n"
    }
],
"base": "stations",
"main": {
    "temp": 287.5,
    "pressure": 1022,
    "humidity": 82,
    "temp_min": 284.25,
    "temp_max": 289.25
},
"visibility": 16093,
"wind": {
    "speed": 0.96,
    "deg": 10.5029
},
"clouds": {
    "all": 1
},
"dt": 1537854780,
"sys": {
    "type": 1,
    "id": 2321,
    "message": 0.0172,
    "country": "US",
    "sunrise": 1537884050,
    "sunset": 1537927234
},
"id": 420040945,
"name": "Vancouver",
"cod": 200

}

Это мое отображение для нужных мне элементов:

const main = response.data["main"]
const sys = response.data["sys"]
const city = response.data.name;
const weather = response.data["weather"][0]
const data = Object.assign(main, weather, sys, city)
res.send(data)
console.log(data)

Наконец, это ответ от моего отображения:

{
"0": "C",
"1": "i",
"2": "n",
"3": "c",
"4": "i",
"5": "n",
"6": "n",
"7": "a",
"8": "t",
"9": "i",
"temp": 293.74,
"pressure": 1018,
"humidity": 90,
"temp_min": 293.15,
"temp_max": 294.25,
"id": 2179,
"main": "Rain",
"description": "light rain",
"icon": "10n",
"type": 1,
"message": 0.0044,
"country": "US",
"sunrise": 1537874932,
"sunset": 1537918192

}

Как видите, CITY разделен на отдельные элементы.Если я потяну только CITY , он точно выберет точный Город, так как "Цинциннати" не "имя": "Цинциннати".

Как я могу объединить элементы для формирования города,или воссоздать элемент "имя": "город" вообще?

1 Ответ

0 голосов
/ 25 сентября 2018

вы получаете неправильный результат, потому что город - это массив и его распространение.измените свой код на приведенный ниже код

Object.assign({}, main, weather, sys, {city})
  or 
Object.assign({}, main, weather, sys, {name:city})

Решение заключается в преобразовании значения массива в свойство объекта.

...