{
"method": "update",
"params": ["TODOS", [{
"id": 275570305,
"time": 1598273441.8892069,
"type": "myid"
}]]
}
该段json使用golang解析失败, golang代码:
var mapTick struct {
Method string `json:"method"`
Params []interface{} `json:"params"`
}
type Param []struct {
ID int64 `json:"id"`
Time float64 `json:"time"`
Type string `json:"type"`
}
err := json.Unmarshal([]byte(jsonstr), &mapTick)
if err != nil {
fmt.Println(err)
} else {
if len(mapTick.Params) == 2 {
fmt.Println(mapTick.Params[1])
if _ , ok := mapTick.Params[1].(Param); ok {
res := mapTick.Params[1].(Param)
fmt.Println(res)
}
}
}
除了我这种代码, 还有更好的解析方法吗?
这个地方不对,可以用reflect.Typeof(mapTick.Params[1])来查看其类型,其实并不是Param
另外定义结构体的时候,最好不要定义为数组:type Param []struct {
可读性太差,自己也容易记错
我改写了下,可以参考:
输出如下:
{update {TODOS [{275570305 1.598273441889207e+09 myid}]}}
Tick的结构需要根据实际情况定义,这里是我根据你现有json定义的,可以自行修改。