学习呦
Go对json、xml、yaml等标准格式编码的支持
Go对json、xml、yaml等标准格式编码的支持
在go中有对这些标准的编码格式支持的包encoding/json、encoding/xml、 encoding/asn1等结构体成员“ini:”和后面对应于ini文件中的变量要没有空格,其他的json、yaml都要求后面没有空格
json: 定义一个Movie对象的类型,下面是例子。这个对象非常适合json格式,预定义好一个和json中的对象一样的go结构体,json.unmarshal()的时候可以直接将json字符串解析成一个预定义好的go对象
type Movie struct { |
上面的line3、line4是tag结构体成员tag结构体成员可以指明在json序列化的时候将Year、Color替换为指定的变量(上面将Year替换为released,Color替换成为color,并且omitempty选项设置了Go结构体成员为空或者为零值时不进行转换为json格式的过程
编码(转换成json)
data, err := json.Marshal(movies) |
输出
上面的输出格式不便于观察,所以还有一种转换的方式
data, err := json.MarshalIndent(movies, "", " ") |
上面方法的第二个参数是:每行输出前缀
第三个参数是:每一个层级的缩进
输出
(因为图片太长仅演示了一部分的输出):
解码(json转换成Go对于类型):
json.Unmarshal(data, &titles) |
输出:
[{Casablanca} {Cool Hand Luke} {Bullitt}] |
Yaml:
注意,yaml映射到go结构体。go结构体里面到成员必须开头大写,大写完后面到tag结构体成员必须要对应yaml中定义的变量名称
pops: |
对应的结构体成员
type AuthPop struct { |
ini:
ini文件解析要注意,tag结构体成员“ini:”和后面对应于ini文件中的变量要没有空格
type SkyConfigConfigMap struct { |

