golang怎样检查一个json可以完美匹配一个定义好的结构体
解决方案
1.用mapinterface{}接json反序列化后的结果
2.用反射把结构体的 json tags给存起来为一个map
3.加个计数器,记录两者key匹配的数目,跟目标结构体json tags字段数量比对就出来了
方法比较笨,不过能解决你的问题。若需要减少反复的内存分配。在公共空间直接分配内存把步骤2的数据给存起来就好了。
■网友
s2 := json.Marshal(json.Unmarshal(s, \u0026amp;x))
s == s2
■网友
首先,这么做的目的是什么?是工程问题,还是学术问题?
泛泛地来讲,可以分三种情况讨论:
A, 如果json格式是固定的,那么struct肯定能一一对应。
B, 假设json是动态的,但可以按类型分发到不同路径,那最终每个路径的情况就是A。
C, 假设json是动态的,但只发到1个路径,这样就无法用1个静态的struct解析动态的json。
对于C情况,要解决的话只能退一步到不够完美的方法,简单点就用mapinterface{},这就和javascript差不多了。当然,也可以进一步改造成上述的B情况,只是有这个必要吗?
■网友
谢邀…… Go 1.10会在Decoder加入DisallowUnknownFields选项 (https://go-review.googlesource.com/c/go/+/74830)dec := json.NewDecoder(strings.NewReader(jsonStream))dec.DisallowUnknownFields()err := dec.decode(\u0026amp;obj)return err == nil 【golang怎样检查一个json可以完美匹配一个定义好的结构体】
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 樊金龙■省领导带队检查节前涉外疫情防控和安全生产工作
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 医院|感染艾滋病毒初期有哪些征兆?可以自行检查吗?共用马桶会传染吗
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
