潍坊市论坛

首页 » 分类 » 问答 » Go语言网络编程系列十JSON
TUhjnbcbe - 2021/7/26 16:56:00
1、解码未知结构的JSON数据

上篇教程学院君给大家介绍了Go语言内置的encoding/json标准库以及如何通过它提供的方法对数据进行编解码。不过在上篇教程的示例中,要解码的JSON数据结构是已知的,在实际开发过程中,有时候我们可能并不知道要解码的JSON数据结构是什么样子的,这个时候,应该怎么处理呢?

类型转换规则

在前面介绍接口的时候,我们提到基于Go语言的面向对象特性,可以通过空接口来表示任何类型,所以同样,这也适用于未知结构的JSON数据解码:只需要将这段JSON数据解码输出到一个空接口即可。

在实际解码过程中,JSON结构里边的数据元素将做如下类型转换:

布尔值将会转换为Go语言的bool类型;

数值会被转换为Go语言的float64类型;

字符串转换后还是string类型;

JSON数组会转换为[]interface{}类型;

JSON对象会转换为map[string]interface{}类型;

null值会转换为nil。

在Go语言标准库encoding/json中,允许使用map[string]interface{}和[]interface{}类型的值来分别存放未知结构的JSON对象或数组。

实例演示

下面我们以上篇教程的解码示例代码来做演示,只是这次,我们将解码结果映射到空接口对象:

u3:=[]byte(`{"name":"学院君","website":"

1
查看完整版本: Go语言网络编程系列十JSON