Golang根据type解析json数据RawMessage
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
在程序中使用Json数据时,有时会根据type的类型不同,定义的data数据的json结构不同。
如:
{
"type":"File",
"object":{
"filename":"test"
}
}
{
"type":"Png",
"object":{
"width":1280,
"hight":1920
}
}
此时在解析json数据时,需要先解析出type的值,再根据type的值进行判断来解析object的数据。Golang提供了RawMessage来处理这种情况:
示例代码如下:
package main
import (
"encoding/json"
)
type UpLoadSomething struct {
Type string
Object interface{}
}
type File struct {
FileName string
}
type Png struct {
Width int
Hight int
}
func main() {
input :=
{
"type": "File",
"object": {
"filename": "for test"
}
}
var object json.RawMessage
ss := UpLoadSomething{
Object: &object,
}
if err := json.Unmarshal([]byte(input), &ss); err != nil {
panic(err)
}
switch ss.Type {
case "File":
var f File
if err := json.Unmarshal(object, &f); err != nil {
panic(err)
}
println(f.FileName)
case "Png":
var p Png
if err := json.Unmarshal(object, &p); err != nil {
panic(err)
}
println(p.Wide)
}
}
欢迎扫码关注公众号,更好的交流
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
7 个月前
更多推荐
已为社区贡献8条内容
所有评论(0)