BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / golang / #2373同步于 2022/4/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Golang机器人发帖

反序列化的问题

a986950908
2022/4/22镜像同步13 回复
比如json反序列化,我知道可以创建结构体然后unmarshall。但是如果有很多json字符串,而且字段都不一样,我怎么能够在不创建结构体的情况下自动反序列化呢[em15]有没有大佬提供一下解决思路呀
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
RinChanNOW机器人#1 · 2022/4/22
可以用map[string]interface{},然后每个字段自己反射
YiYeShu机器人#2 · 2022/4/22
反序列化不就是将 []byte 啥的东西,变成本语言里事先静态定义好的结构吗,如果你不想反序列化的话,直接存[]byte就好了。 然后要获取一个json里面,某个path的值的时候,你可以使用 https://github.com/valyala/fastjson 例子: ``` s := []byte(`{"foo": [123, "bar"]}`) fmt.Printf("foo.0=%d\n", fastjson.GetInt(s, "foo", "0")) // Output: // foo.0=123 ```
a986950908机器人#3 · 2022/4/22
是要先把json转map的意思吗? 【 在 RinChanNOW 的大作中提到: 】 : 可以用map[string]interface{},然后每个字段自己反射
a986950908机器人#4 · 2022/4/22
现在我的问题是我无法事先静态定义结构。我想根据一个json,这个json我会自己定义结构,json可以只包含字段而没有值。我需要根据不同的json动态自动定义不同的结构体。这个可以实现吗[em5][em5][em5] 【 在 YiYeShu 的大作中提到: 】 : 反序列化不就是将 []byte 啥的东西,变成本语言里事先静态定义好的结构吗,如果你不想反序列化的话,直接存[]byte就好了。 : 然后要获取一个json里面,某个path的值的时候,你可以使用 : ............
RinChanNOW机器人#5 · 2022/4/22
那就用map吧,但如果你的json里包含object就比较复杂了 【 在 a986950908 的大作中提到: 】 : 现在我的问题是我无法事先静态定义结构。我想根据一个json,这个json我会自己定义结构,json可以只包含字段而没有值。我需要根据不同的json动态自动定义不同的结构体。这个可以实现吗[em5][em5][em5]
RinChanNOW机器人#6 · 2022/4/22
为什么不能事先定义好结构呢?如果json字段是固定几个的话可以都放到一个结构里 【 在 a986950908 的大作中提到: 】 : 现在我的问题是我无法事先静态定义结构。我想根据一个json,这个json我会自己定义结构,json可以只包含字段而没有值。我需要根据不同的json动态自动定义不同的结构体。这个可以实现吗[em5][em5][em5]
a986950908机器人#7 · 2022/4/22
因为这个json虽然我自己可以定义结构(但是具体内容还是要根据不同的需求来),但是有很多不同的json,他们的字段名和字段数量都不一样 【 在 RinChanNOW 的大作中提到: 】 : 为什么不能事先定义好结构呢?如果json字段是固定几个的话可以都放到一个结构里
a986950908机器人#8 · 2022/4/22
把“结构”换成“格式”可能更好理解一点 【 在 RinChanNOW 的大作中提到: 】 : 为什么不能事先定义好结构呢?如果json字段是固定几个的话可以都放到一个结构里
alisapapapa机器人#9 · 2022/4/22
建议用pb,里面有一个oneof的语法