Golang Go语言中解析JSON串时,里面的值类型必须都是字符串类型吗
Golang Go语言中解析JSON串时,里面的值类型必须都是字符串类型吗
使用 php 调用一个 golang 的接口 Content-Type 设置为了 application/json,然后我使用 php 发送的 post 数据如下
{
"name":"lepig",
"pid":5,
"address":"BeiJing"
}
关键在于上面的 pid,当我传数字类型的 5 就报json 解析失败
,修改为字符类型的 5 就正常。
// 正常
{
"name":"lepig",
"pid":"5",
"address":"BeiJing"
}
所以我想知道的是,golang 在解析 json 的时候这个pid
是什么类型,是不是取决于那边如何定义这个结构体属性的类型?
更多关于Golang Go语言中解析JSON串时,里面的值类型必须都是字符串类型吗的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
取决于结构体字段类型定义
更多关于Golang Go语言中解析JSON串时,里面的值类型必须都是字符串类型吗的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
取决于那边如何定义这个结构体属性的类型。
好的,谢谢老哥
go 中解析把数字都划为 float64
https://blog.golang.org/json-and-go
Go blog 的文章有写,解析不知道结构的 json 的时候,可以使用 map
如果觉得看英文文章比较麻烦,可以参考我的翻译😃
https://www.bwangel.me/2019/05/21/review-json-and-go/
感谢分享。
在Golang(Go语言)中解析JSON串时,值类型并不必须都是字符串类型。Go语言的encoding/json
包提供了灵活的方式来处理JSON数据,支持多种数据类型之间的转换。
JSON数据本身支持的基本类型包括字符串(string)、数字(number,包括整数和浮点数)、布尔值(boolean)、数组(array)、对象(object,即键值对集合)以及空值(null)。在Go语言中,这些JSON类型可以映射到相应的Go类型,如:
- 字符串(string)映射到Go的
string
类型。 - 数字可以映射到Go的
float64
、int
、int64
等数值类型。 - 布尔值映射到Go的
bool
类型。 - 数组映射到Go的
[]interface{}
、[]string
、[]int
等切片类型。 - 对象映射到Go的
map[string]interface{}
、结构体(struct)等。 - 空值可以映射到Go的
interface{}
类型或特定类型的指针(如*int
、*string
等),并检查是否为nil
。
因此,在解析JSON时,你可以根据JSON数据的实际结构定义相应的Go结构体或其他类型来接收解析后的数据,而不仅仅是字符串类型。这样不仅可以提高代码的可读性和可维护性,还能有效利用Go语言的类型系统来处理数据。