我正在为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数组。
此致
答案 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