5 go
我正在使用以下代码未能成功解析 json 值,但它的内部数组 []
https://play.golang.org/p/5HdWeyEtvie
package main
import (
"encoding/json"
"fmt"
)
var input = `
[
{
"created_at": "Thu May 31 00:00:01 +0000 2012"
},
{
"created_at": "Thu May 31 00:00:01 +0000 2012"
}
]
`
func main() {
var val map[string]interface{}
if err := json.Unmarshal([]byte(input), &val); err != nil {
panic(err)
}
fmt.Println(val)
}
Run Code Online (Sandbox Code Playgroud)
这个想法是获取值作为键并打印它,就像一个获取字符串参数=“created_at”并打印它的函数。
sol*_*olo 10
您的输入是:
[
{
"created_at":"Thu May 31 00:00:01 +0000 2012"
},
{
"created_at":"Thu May 31 00:00:01 +0000 2012"
}
]
Run Code Online (Sandbox Code Playgroud)
你可以把它变成一个像这样的结构:
type MyArray []struct {
CreatedAt string `json:"created_at"`
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以读取 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)
}
}
Run Code Online (Sandbox Code Playgroud)
将来,如果您不确定如何将 JSON 对象转换为结构体,您可以咨询JSON-to- Go——它非常有用。干杯!
您正在将数组解组到地图。这显然行不通。你需要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)
}
Run Code Online (Sandbox Code Playgroud)