Golang Go语言中解析JSON串时,里面的值类型必须都是字符串类型吗

发布于 1周前 作者 wuwangju 来自 Go语言

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

7 回复

取决于结构体字段类型定义

更多关于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的float64intint64等数值类型。
  • 布尔值映射到Go的bool类型。
  • 数组映射到Go的[]interface{}[]string[]int等切片类型。
  • 对象映射到Go的map[string]interface{}、结构体(struct)等。
  • 空值可以映射到Go的interface{}类型或特定类型的指针(如*int*string等),并检查是否为nil

因此,在解析JSON时,你可以根据JSON数据的实际结构定义相应的Go结构体或其他类型来接收解析后的数据,而不仅仅是字符串类型。这样不仅可以提高代码的可读性和可维护性,还能有效利用Go语言的类型系统来处理数据。

回到顶部