go 如何解析没有Key的JsonArray

weixin_36866583 2016-11-29 05:16:06
例如如下格式:
[2,
"19223201",
"Boot",
{"Vendor": "VendorX", "Model": "SingleSocket"}
]



想了很多办法都解析不了~~


这样打印也是空,好郁闷~~
err := json.Unmarshal(NewMsg, &r)
if err != nil {
return err
}
m, _ := r.(map[string]interface{})
fmt.Println("m:", m)
...全文
2974 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aree 2018-03-01
  • 打赏
  • 举报
回复
func jsonParse(f interface{}){ m := f.(map[string]interface{}) for k, v := range m { switch vv := v.(type) { case string: fmt.Println(k, "[string] :", vv) case float64: fmt.Println(k, "[float64]:", vv) case bool: fmt.Println(k, "[bool]:", vv) case nil: fmt.Println(k, "[nil]:", vv) case []interface{}: fmt.Println(k, "[array]:") for i, u := range vv { //var f1 interface{} switch vv1 := u.(type) { case string: fmt.Println(i, "[string_] :", u) case float64: fmt.Println(i, "[float64_]:", u) case bool: fmt.Println(i, "[bool_]:", u) case nil: fmt.Println(i, "[nil_]:", u) case []interface{}: fmt.Println(i, "[array_] :", u) //m1 := u.(map[string]interface{}) //jsonParse(u) case interface{}: fmt.Println(i, "[interface_]:",u) m1 := u.(map[string]interface{}) jsonParse(m1) default: fmt.Println(" ", i, "[type?_]", u, ", ",vv1) } } case interface{}: fmt.Println(k, "[interface]:",vv) m1 := v.(map[string]interface{}) jsonParse(m1) default: fmt.Println(k, "[type?]",vv) } } } func main() { b := []byte(`{"Name":"Wednesday", "Age":6,"Parents": [ "Gomez", "Moticia" ],"data":[{"a":"aa","b":"bb"},{"c":"cc"},{"list":["dd",1,"ff"]}]}`) var f interface{} err := json.Unmarshal(b, &f) if err != nil { fmt.Println(err) } jsonParse(f) }
haizideai000 2018-02-23
  • 打赏
  • 举报
回复
first: 你这个是一个类型不定的数组, 类型应该是[]interface{} second: 假设你需要对每个value 进行解析,你可以通过断言的方式和反射的方式在进行下一步解析
不得闲 2016-12-02
  • 打赏
  • 举报
回复
你这个结构都不是Map类型的,你声明为Map的结构作为接收的肯定不行啊 用[]interface{}这种切片类型去搞
weixin_36866583 2016-11-29
  • 打赏
  • 举报
回复
r是 interface var r interface{}

2,190

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧