GoLang - 创建一个JSON数组和JSON对象

时间:2017-11-07 22:59:10

标签: json go

我正在为GoLang开发一款应用。该应用程序正在从第三方获取JSON数据

我没有看到如何创建json对象并将其附加到json数组。发生的事情是我有一个循环并且收到了每个元素。

下面是代码:

type PastWeekWeatherArray struct {
    PastWeekWeather []PastDayWeather `json:"array"`
}

type PastDayWeather struct {
    DayWeather string `json:"day"`
}

func get_weather(ctx context.Context, place string, date string) (string, error){
var msg PastWeekWeatherArray

client := darksky.New(apiKey)

for j:= 0; j < 7; j++ {
    forecast, err := client.get_data(j)
    if(err != nil) {
        fmt.Println(err.Error())
        return "",err
    }
    // forecast.Daily
}

数据包含在forecast.Daily中。这个响应需要存储在'PastDayWeather'中,json obect然后追加到PastWeekWeatherArray

forecast.Daily返回一个(类型* Datablock),我想将它强制转换为JSON,然后插入JSON数组。

此致

1 个答案:

答案 0 :(得分:1)

如果我理解正确,下面的代码可以帮助你。

package main

import (
    "fmt"
    "encoding/json"
)

type PastWeekWeatherArray struct {
    PastWeekWeather []PastDayWeather `json:"pastWeekWeather"`
}

type PastDayWeather struct {
    DayWeather string `json:"dayWeather"`
}

var (
    jsonTest = `{
        "pastWeekWeather": [
            {"dayWeather":"10"},
            {"dayWeather":"15"}
        ]   
    }`
)

func main() {
    array := PastWeekWeatherArray{make([]PastDayWeather, 0)}
    err := json.Unmarshal([]byte(jsonTest), &array)

    fmt.Println("Error: ", err)

    for _, v := range array.PastWeekWeather{
        fmt.Println("Day: ", v.DayWeather)
    }
}

注意像json:"pastWeekWeather"这样的标签json需要与jsonTest中的变量名称相同。 您也可以运行代码here