3 回答
TA贡献1788条经验 获得超4个赞
有一个 Go 包,其中包含用于解码 JSON 字符串的方法。
https://golang.org/pkg/encoding/json/#Unmarshal
这是一个使用示例:
package main
import (
"encoding/json"
"fmt"
)
func main() {
var jsonBlob = []byte(`[
{"Name": "Platypus", "Order": "Monotremata"},
{"Name": "Quoll", "Order": "Dasyuromorphia"}
]`)
type Animal struct {
Name string
Order string
}
var animals []Animal
err := json.Unmarshal(jsonBlob, &animals)
if err != nil {
fmt.Println("error:", err)
}
fmt.Printf("%+v", animals)
}
编辑:正如 Malik 所指出的,您传递的指针的值的类型是错误的。在这种情况下,您的类型应该是map[string]interface{}(最好,因为 JSON 字段可能不存储字符串)或map[string]string代替[]map[string]string. 开头的括号是错误的:这将是一个 JSON 对象数组。
TA贡献1898条经验 获得超8个赞
只是你的程序中有一个小错字。您已声明mytype
为一片地图,而不仅仅是一张地图。
只是改变:
type mytype []map[string]string
到:
type mytype map[string]string
有关示例,请参见https://play.golang.org/p/pZQl8jV5TC 。
TA贡献1840条经验 获得超5个赞
乔纳森的回答提供了一个解码 JSON 的好例子,并链接了相关的包。您没有提供太多关于您的解析到底出了什么问题的详细信息,但是如果我不得不猜测一下,我会说您可能没有创建一个适当的结构来包含解组后的 JSON。因为 Go 是静态类型的,它希望数据遵循明确定义的格式。
如果你不想费心去定义结构,你可以只使用一个空的接口对象,这在 Go 中是一个包罗万象的东西。只需声明一个类型为 []interface{} 的变量,然后将其传递给 JSON 解组函数。希望这可以帮助!
- 3 回答
- 0 关注
- 173 浏览
添加回答
举报