当前位置: > > > > 如何解析不同类型的JSON-RPC表
如何解析不同类型的JSON-RPC表
来源:stackoverflow
2024-04-25 11:48:34
0浏览
收藏
偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何解析不同类型的JSON-RPC表》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
问题内容
我想获取具有以下结构的 json-rpc 文件中的信息:
{
"id": "foo1",
"error": null,
"result": [
{
"key": [
"hello 1",
1,
"world 1"
],
"val": {
"type": "static"
}
},
{
"key": [
"hello 2",
1,
"world 2"
],
"val": {
"type": "static"
}
}
]
}
这是我的解析函数,key是字符串表(不能接受int类型):
type jsonrpcrsp struct {
id string `json:"id"`
error *string `json:"error"`
result json.rawmessage `json:"result"`
}
type jsonrpcentry_val struct {
type string `json:"type"`
}
type jsonrpcentry struct {
key [3]string `json:"key"`
val jsonrpcentry_val `json:"val"`
}
jsonresult := jsonrpcrsp{}
json.unmarshal(data, &jsonresult)
entries := []jsonrpcentry{}
for _, val := range jsonresult {
json.unmarshal(val.result, &entries)
}
如何解析“key”表?…问题是有不同的类型
关键表结构是:
[ <string>, <int>, <string>]
正确答案
要在 go 中解组不同类型的数组,如果需要访问类型,则需要使用接口和类型断言。
这对你有用:
type Result struct {
Key [3]interface{} `json:"key"`
Val struct {
Type string `json:"type"`
} `json:"val"`
}
msg := JsonRpcRsp{}
json.Unmarshal(data, &msg)
var result []Result
json.Unmarshal(msg.Result, &result)
for _, v := range result {
key1 := v.Key[0].(string)
key2 := v.Key[1].(float64)
key3 := v.Key[2].(string)
fmt.Println(key1, key2, key3)
}
将三个接口断言为其类型后,您可以根据您的用例进一步使用它们。
理论要掌握,实操不能落!以上关于《如何解析不同类型的JSON-RPC表》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注米云公众号吧!
