专业的编程技术博客社区

网站首页 > 博客文章 正文

Go语言学习基础-JSON与XML(go json操作)

baijin 2024-08-16 11:44:09 博客文章 8 ℃ 0 评论

JSON格式

Go提供了对JSON编码和解码的内置支持,包括对内置和自定义数据类型的相互转换。

下面例子中使用两个结构来演示自定义类型的编码和解码。只有导出的字段将用于JSON编码/解码。要导出的字段必须以大写字母开头。

首先,我们将研究对基本数据类型到JSON字符串的编码。这里有一些基本类型的例子,还有一些切片和映射的例子,它们按照预期编码为JSON的数组和对象,JSON包还可以自动编码您的自定义数据类型。它只会把导出字段包含在输出的编码中,默认情况下将字段名用作JSON键名。也可以在结构字段声明上的使用tag标记自定义编码的JSON键名。

其次,看看JSON字符串解码的到Go基本数据类型。下面是一个通用数据结构的例子,我们需要提供一个变量,JSON包可以将解码后的数据放在这个变量中。map[string]interface{}是字符串解码到任意数据类型的映射,解码到该映射并检查关联的错误。为了使用解码后映射中的值,我们需要将它们转换为相应的类型。例如,将num中的值转换为float64类型。访问多层嵌套的数据需要转换的序列。

还可以将JSON解码为自定义数据类型。这样做的好处是为我们的程序增加了额外的类型安全性,并且在访问解码后的数据时不需要类型断言。在上面的示例中,总是使用字节和字符串作为数据和JSON在标准输出上的中介。我们还可以将JSON编码直接发送给os.Writers,比如os.Stdout,甚至HTTP响应体。

结果:

$ go run json.go

true

1

2.34

"gopher"

["apple","peach","pear"]

{"apple":5,"lettuce":7}

{"Page":1,"Fruits":["apple","peach","pear"]}

{"page":1,"fruits":["apple","peach","pear"]}

map[num:6.13 strs:[a b]]

6.13

a

{1 [apple peach]}

apple

{"apple":5,"lettuce":7}

XML格式

Go使用encoding.xml包提供对XML和类似XML的格式的内置支持。与json示例类似,字段标记包含编码器和解码器的指令。这里我们使用XML包的一些特殊特性:XML字段名指定表示此结构的XML元素的名称;id,attr意味着id字段是XML元素的一个属性,而不是一个嵌套元素;使用xml.MarshalIndent方法生成可读的输出。若要向输出添加通用XML头,请显式追加它xml.Header。使用Unmarhshal将XML的字节流解析为数据结构。如果XML格式不正确或无法映射到Plant,将返回一个描述性错误。parent>child>Plant字段标记告诉编码器在<parent><child>下嵌套所有的Plant。

结果:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表