如何将JSON对象分配给属性

时间:2019-07-13 19:14:40

标签: javascript javascript-objects

我将天气预报保存为JSON格式。我试图将不同的对象分配给我的特定属性。当JSON对象重复时(“ date”对象下有许多不同的日期),我该怎么做。 如何为我的属性分配不同的日期。例如day1:date [0]。等等吗?

在当前天气下它可以工作,因为只有一个日期。 (并且所有对象仅存在一次,而对于7天的预测,相同数据重复7次。)

以下是变量“ data”保存的示例: {“ ConditionMatched”:“是”,“ ConditionMatchedNum”:“ 1”,“ ForecastWeather”:{“ Days”:[{“ date”:“ 13/07/2019”,“ sunrise_time”:“ 05:14”, “ sunset_time”:“ 21:07”,“ slp_in”:30.06}]},

    const getCurrentWeatherJSON = (data) => {
      const temperatureText = `Teplota je ${data.date}°C.`;

      return {

        set_attributes: {
          weatherDescription: data.date[0],
          weatherFeelsLikeTempC: data.sunrise_time
        },
        messages: [{
            text: temperatureText
          },

        ]
      }
    };

1 个答案:

答案 0 :(得分:0)

首先,请确保您确实在处理JS对象与JSON字符串。如果数据是JSON字符串,则需要将其解析为一个对象:

const getCurrentWeatherJSON = (dataString) => {
  var data = JSON.parse(dataString);  // need to wrap in a try/catch for validation

第二,您访问的结构不正确。这些日期位于名为ForecastWeather的成员下,该成员具有名为Days的子成员,该子成员是一组对象。如果您可以假设“天”总是只有1个元素,则可以按以下方式访问日期和日出时间:

      weatherDescription: data.ForecastWeather.Days[0].date,
      weatherFeelsLikeTempC: data.ForecastWeather.Days[0].sunrise_time

尽管我不得不说在这两种情况下,您的姓名似乎都与数据不匹配(为什么weatherFeelsLikeTempC可以恰当地描述一天中的某个时间??