4 回答

TA貢獻1943條經驗 獲得超7個贊
您的輸入是:
[??
? ?{??
? ? ? "created_at":"Thu May 31 00:00:01 +0000 2012"
? ?},
? ?{??
? ? ? "created_at":"Thu May 31 00:00:01 +0000 2012"
? ?}
]
你可以把它變成這樣的結構:
type MyArray []struct {
? ? CreatedAt string `json:"created_at"`
}
現在您可以讀取 JSON 數據并循環遍歷它以獲得所需的值。這是你得到的:
package main
import (
? ? "encoding/json"
? ? "fmt"
)
var str = `[
? ? {
? ? "created_at": "Thu May 31 00:00:01 +0000 2012"
? ? },
? ? {
? ? "created_at": "Thu May 31 00:00:01 +0000 2013"
? ? }
]`
type MyArray struct {
? ? CreatedAt string `json:"created_at"`
}
func main() {
? ? var m []MyArray
? ? if err := json.Unmarshal([]byte(str), &m); err != nil {
? ? ? ? panic(err)
? ? }
? ? for _, val := range m {
? ? ? ? fmt.Println(val.CreatedAt)
? ? }
}

TA貢獻1784條經驗 獲得超8個贊
您正在將數組解組到地圖。這顯然行不通。你需要val是一個數組。
func main() {
var val []map[string]interface{} // <---- This must be an array to match input
if err := json.Unmarshal([]byte(input), &val); err != nil {
panic(err)
}
fmt.Println(val)
}

TA貢獻2021條經驗 獲得超8個贊
var input = `[
{
"created_at": "Thu May 31 00:00:01 +0000 2012"
},
{
"created_at": "Thu May 31 00:00:01 +0000 2013"
}
]`
func main() {
var val []struct {
CreatedAt string `json:"created_at"`
}
if err := json.Unmarshal([]byte(input), &val); err != nil {
panic(err)
}
fmt.Println(val[0].CreatedAt)
}

TA貢獻2019條經驗 獲得超9個贊
你應該像這樣創建一個結構。
type Data struct {
CreateAt time.Time `json:"create_at"`
}
func main() {
var in []Data
if err := json.Unmarshal([]byte(input), &in); err != nil{
log.Fatal(err)
}
for _, data := range in{
fmt.Println(data.CreateAt)
}
}
- 4 回答
- 0 關注
- 246 瀏覽
添加回答
舉報