如何解析不同类型的JSONRPC表

2024年 2月 14日 85.9k 0

如何解析不同类型的json-rpc表

php小编百草为您介绍如何解析不同类型的JSON-RPC表。JSON-RPC是一种轻量级的远程过程调用协议,广泛应用于各种Web服务中。在解析JSON-RPC表时,我们需要注意不同类型的表结构和数据格式,以确保正确解析和处理数据。本文将介绍常见的JSON-RPC表类型,包括单一表、嵌套表和数组表,以及相应的解析方法和注意事项。通过了解不同类型的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”表?...问题是有不同的类型

关键表结构是:

[ , , ]

登录后复制

解决方法

要在 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表的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论