13.4 第三方API数据格式的解析技巧
一、未知json整理
func parseNLP() {
res := `{
"data": [{
"synonym": "",
"weight": "0.6",
"word": "真丝",
"tag": "材质"
},
{
"synonym": "",
"weight": "0.8",
"word": "韩都衣舍",
"tag": "品牌"
},
{
"synonym": "",
"weight": "1.0",
"word": "连衣裙",
"tag": "品类"
}]
}`
// 不想对这个数据类型新建样式,就用map接收,因为名字可以确认是字符串,内容不确定格式,就用interface{}接收
// m := make(map[string]interface{})
// err := json.Unmarshal([]byte(res), &m)
// if err != nil {
// panic(err)
// }
// // 输出
// fmt.Printf("%+v\n", m["data"])
//
// // 获取第二个值,因为map,所以要用切片去取,给指明type(切片)
// fmt.Printf("%+v\n", m["data"].([]interface{})[2])
//
// fmt.Printf("%+v\n", m["data"].([]interface{})[2].(map[string]interface{})["synonym"])
// 方法内定义数据类型
m := struct {
Data []struct {
Synonym string `json:"synonym"`
Weight string `json:"weight"`
Word string `json:"word"`
Tag string `json:"tag"`
} `json:"data"`
}{}
err := json.Unmarshal([]byte(res), &m)
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", m)
}Last updated
Was this helpful?