Golang JSON的进阶用法实例讲解

2020-01-28 13:22:06丽君

反解析得到的结构体数据如下:


&{Name:yulibaozi Port:{Type:1 IntVal:0 StrVal:8090}}

测试编码的json

测试编码int的结构体如下:


host := &Host{
   Name: "yulibaozi",
   Port: Port{
     Type:  Int,
     IntVal: 8080,
   },
 }

编码后的json如下:


{"name":"yulibaozi","port":8080}

测试编码string的结构体如下:


host := &Host{
   Name: "yulibaozi",
   Port: Port{
     Type:  String,
     StrVal: "8080",
   },
 }

编码后的json数据如下:


{"name":"yulibaozi","port":"8080"}

在反编码测试中,你会发现当json填入的类型不同时,会编码到结构体中对应的字段中。

在编码测试中, 具体编码那个数据是由Type来确定的。

总结

其实,这篇文章只是分享了下json中使用的小技巧,他打破了在使用json时,需要呆板的数据结构的印象,转而走向了多变,灵活跳脱的风格,其实,这这个小tips的核心在于实现Unmarshaller,Marshaller这两个结构体,他们的实现是这个分享的关键,当然,你可以实现如开篇所说的那样,json某字段兼容2种及以上结构,当然,你也可以对yaml,toml等进行折腾,都会得到你想要的答案。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对易采站长站的支持。