广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang json 类型转换
  • 687
分享到

golang json 类型转换

2023-05-14 21:05:20 687人浏览 安东尼
摘要

在 golang 中,JSON 是一种重要的数据格式,因为其可以方便的进行数据传输和存储。在处理 jsON 数据时,类型转换是非常常见的操作,本文将介绍 Golang 中的 JSON 类型转换。JSON 数据类型在进行 JSON 类型转换之

golang 中,JSON 是一种重要的数据格式,因为其可以方便的进行数据传输和存储。在处理 jsON 数据时,类型转换是非常常见的操作,本文将介绍 Golang 中的 JSON 类型转换。

JSON 数据类型

在进行 JSON 类型转换之前,我们需要了解 JSON 中的数据类型。JSON 数据类型与 Golang 中的数据类型不完全对应,JSON 中有以下 6 种数据类型:

  • 对象( Object ):由大括号 {} 包围,表示键值对集合,键值对之间使用逗号隔开。
  • 数组( Array ):由中括号 [] 包围,表示值的有序列表,值之间使用逗号隔开。
  • 字符串( String ):由双引号 " 包围,表示字符串值。
  • 数值( Number ):表示数字值,可以为整数或浮点数。
  • 布尔( Boolean ):表示布尔值 true 或 false。
  • 空值( Null ):表示空对象或空值。

在 Golang 中,我们可以使用以下类型来表示 JSON 数据类型:

  • 对象:map[string]interface{}
  • 数组:[]interface{}
  • 字符串:string
  • 数值:float64
  • 布尔:bool
  • 空值:nil

JSON 解析与编码

在进行 JSON 类型转换之前,首先需要了解 JSON 解析与编码。

JSON 解析

通过 encoding/json 包中的 Decode 方法,可以将一个字符串或字节数组解析为 JSON 对象。例如:

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name    string
    Age     int
    Address string
}

func main() {
    jsonStr := `{"Name": "Tom", "Age": 18, "Address": "Beijing"}`
    var p Person
    err := json.Unmarshal([]byte(jsonStr), &p)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(p.Name, p.Age, p.Address)
}

上述代码中,Unmarshal 方法将 JSON 字符串解析为 Person 对象,当然如果我们只想解析为 map[string]interface{}[]interface{} 等基础数据类型也是可以的。

JSON 编码

通过 encoding/json 包中的 Encode 方法,可以将一个 JSON 对象编码为一个字符串或字节数组。例如:

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name    string
    Age     int
    Address string
}

func main() {
    p := Person{Name: "Tom", Age: 18, Address: "Beijing"}
    jsonString, err := json.Marshal(p)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(jsonString))
}

上述代码中,Marshal 方法将 Person 对象编码为 JSON 字符串。当然,如果我们只想编码 map[string]interface{}[]interface{} 等基础数据类型也是可以的。

JSON 类型转换

在解析 JSON 数据后,我们可以将 JSON 对象转换为 Golang 中的基础数据类型,例如 intstringbool 等,也可以将 JSON 数组转换为 Golang 中的数组,或是将 JSON 对象转换为 Golang 中的结构体。

将 JSON 数字转换为 int 和 float64

将 JSON 中的数字转换为 Golang 中的数据类型有两种常用方式,分别是 float64()int()。例如:

import (
    "encoding/json"
    "fmt"
)

func main() {
    jsonStr := `{"float": 1.23, "int": 456}`
    var data map[string]interface{}
    err := json.Unmarshal([]byte(jsonStr), &data)
    if err != nil {
        fmt.Println(err)
        return
    }

    floatValue := data["float"].(float64)
    intValue := int(data["int"].(float64))
    fmt.Println(floatValue, intValue)
}

上述代码中,我们首先将 JSON 字符串解析为 map[string]interface{} 类型的 data 对象,然后通过断言将 data 对象中的 float 转换为 float64 类型的 floatValueint 转换为 int 类型的 intValue

将 JSON 字符串转换为 string

将 JSON 中的字符串转换为 Golang 中的 string 类型很简单,直接通过断言即可。例如:

import (
    "encoding/json"
    "fmt"
)

func main() {
    jsonStr := `{"name": "Tom"}`
    var data map[string]interface{}
    err := json.Unmarshal([]byte(jsonStr), &data)
    if err != nil {
        fmt.Println(err)
        return
    }

    name := data["name"].(string)
    fmt.Println(name)
}

上述代码中,我们将 JSON 字符串解析为 map[string]interface{} 类型的 data 对象,然后通过断言将 data 对象中的 name 转换为 string 类型的 name

将 JSON 数组转换为 []interface{}

将 JSON 中的数组转换为 Golang 中的 []interface{} 类型很简单,直接通过断言即可。例如:

import (
    "encoding/json"
    "fmt"
)

func main() {
    jsonStr := `["Tom", 18, 1.23]`
    var data []interface{}
    err := json.Unmarshal([]byte(jsonStr), &data)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(data)
}

上述代码中,我们将 JSON 字符串解析为 []interface{} 类型的 data 数组,通过输出可以看到 data 数组的每个元素都被正确解析了。

将 JSON 对象转换为 map[string]interface{}

将 JSON 中的对象转换为 Golang 中的 map[string]interface{} 类型也很简单,直接通过断言即可。例如:

import (
    "encoding/json"
    "fmt"
)

func main() {
    jsonStr := `{"name": "Tom", "age": 18}`
    var data map[string]interface{}
    err := json.Unmarshal([]byte(jsonStr), &data)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(data)
}

上述代码中,我们将 JSON 字符串解析为 map[string]interface{} 类型的 data 对象,通过输出可以看到 data 对象中包含了两个键值对 nameage

将 JSON 对象转换为结构体

将 JSON 中的对象转换为 Golang 中的结构体需要指定结构体的字段,然后通过断言将结构体字段值进行赋值。例如:

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name    string
    Age     int
    Address string
}

func main() {
    jsonStr := `{"Name": "Tom", "Age": 18, "Address": "Beijing"}`
    var data map[string]interface{}
    err := json.Unmarshal([]byte(jsonStr), &data)
    if err != nil {
        fmt.Println(err)
        return
    }

    p := Person{
        Name:    data["Name"].(string),
        Age:     int(data["Age"].(float64)),
        Address: data["Address"].(string),
    }
    fmt.Println(p)
}

上述代码中,我们将 JSON 字符串解析为 map[string]interface{} 类型的 data 对象,然后通过断言将 data 对象中的键值对分别赋值给结构体 Person 的字段。

总结

Golang 中的 JSON 类型转换非常常见,因此在进行 JSON 数据处理时应该对其进行充分的了解。本文通过介绍 Golang 中 JSON 的数据类型、JSON 解析与编码方法及 JSON 类型转换等内容,希望可以帮助读者更好的应用 Golang 处理 JSON 数据。

以上就是golang json 类型转换的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: golang json 类型转换

本文链接: https://www.lsjlt.com/news/206381.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang json 类型转换
    在 Golang 中,JSON 是一种重要的数据格式,因为其可以方便的进行数据传输和存储。在处理 JSON 数据时,类型转换是非常常见的操作,本文将介绍 Golang 中的 JSON 类型转换。JSON 数据类型在进行 JSON 类型转换之...
    99+
    2023-05-14
  • golang bool 类型转换
    在 Golang 中,bool 类型是一个布尔类型,它只有两个值:true 和 false。在某些情况下,我们需要将 bool 类型转换成其他类型,例如整型、字符串等。那么,Golang 中 bool 类型的转换怎么做呢?以下是详细说明:b...
    99+
    2023-05-15
  • golang date类型转换
    Golang是一种非常流行的编程语言,其性能和易用性都得到了开发者的广泛认可。在Golang中,日期类型是使用time包表示的,而且时间格式化和日期类型转换是非常常见的操作。本文将介绍如何在Golang中进行日期类型转换。Golang的时间...
    99+
    2023-05-15
  • golang 强制类型转换
    Golang是一门静态类型语言,在编译期间就会确定变量的数据类型。因此,在进行不同数据类型之间的转换时需要进行强制类型转换。强制类型转换是将一个类型的值转换为另一种类型,最常见的是将数字型数据类型转换为字符串型数据类型以进行格式化处理,或者...
    99+
    2023-05-15
  • golang 数值类型转换
    随着Golang的流行,越来越多的开发者开始学习和使用Golang编程语言。在Golang中,数字类型转换是一个常见的问题。本篇文章将讨论如何在Golang中进行数值类型的转换。第一部分:Golang中的数值类型在Golang中,有不同类型...
    99+
    2023-05-14
  • golang 类型转换断言
    在 Golang 开发中,类型转换非常常见。类型转换是将一个变量或者一个值从一种类型转换成另外一种类型的过程。类型转换可以跨越不同的基本类型,也可以跨越不同的对象类型。这是非常重要的一项功能,因为不同的类型有不同的用途,有时候需要将一个类型...
    99+
    2023-05-14
  • golang类型转换失败
    在使用golang进行类型转换时,有时会出现类型转换失败的情况。这可能是因为数据类型不兼容,或者数据为空引起的。在本文中,我们将讨论可能导致golang类型转换失败的原因,并提供解决方案。数据类型不兼容golang是强类型语言,在进行类型转...
    99+
    2023-05-14
  • golang 对象类型转换
    随着 Go 语言的不断发展和应用,越来越多的开发者开始使用它来构建高效、可靠的应用程序。在使用 Go 进行开发的过程中,经常会遇到需要进行对象类型转换的情况。本文将为你介绍 Go 语言中的对象类型转换,帮助你更好地理解和应用这一重要的特性。...
    99+
    2023-05-14
  • golang 图片类型转换
    Go是一门被广泛应用于网络编程、云计算、分布式系统等领域的编程语言,其在图像处理方面的应用也逐渐受到了关注。在Go语言中,图片类型转换是一项常见的图像处理操作,可以将一种格式的图片转换为另一种格式,比如将JPEG格式的图片转换为PNG格式的...
    99+
    2023-05-15
  • golang 字段类型转换
    Golang 字段类型转换在 Golang 中,变量的类型是比较严格的,这也是 Golang 语言设计出色的原因之一。但在实际的编程场景中,我们会遇到不同类型的值之间需要转换的情况。因此,了解 Golang 中的类型转换是很重要的。在 Go...
    99+
    2023-05-14
  • golang变量类型转换
    Go语言是一门静态类型语言,也就是说在使用变量之前必须先定义它们的类型。有时候我们需要将已有的变量类型转换成另一种类型,本文将介绍golang变量类型转换的相关知识。在golang中,类型转换是通过显式转换来实现的,也就是说开发人员需要明确...
    99+
    2023-05-14
  • golang类型推断与隐式类型转换
    目录前言一、常量的隐式类型转换1.常量的声明2.常量的类型转换3.隐式转换的原理二、变量的类型推断1.类型推断的原理三、类型推断示例分析总结前言 golang类型推断可以省略类型,像...
    99+
    2022-11-13
  • golang强制类型转换和类型断言
    目录1.强制类型转换2.类型断言1.强制类型转换 golang是强类型语言,但是和c++,Java不太一样的是,go中没有隐式类型转换,go中的类型转换只有:强制类型转换和断言 在j...
    99+
    2022-11-12
  • golang怎么转换指针类型
    在golang中,指针是一个非常强大的特性。指针可以使程序能够更加高效地使用内存,尤其是在处理大量数据时。但在使用指针时,我们需要注意指针的类型,并确保我们正确地执行指针类型转换。指针类型转换是指将一个指针类型转换为另一个指针类型。在gol...
    99+
    2023-05-14
    Golang go语言 指针
  • golang如何转换指针类型
    这篇文章主要讲解了“golang如何转换指针类型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang如何转换指针类型”吧!在golang中,指针是一个非常强大的特性。指针可以使程序能够...
    99+
    2023-07-05
  • golang值类型转换成[]uint8类型的操作
    在go语言中,byte其实是uint8的别名,byte 和 uint8 之间可以直接进行互转。 目前来只能将0~255范围的int转成byte。 func Int64ToByte...
    99+
    2022-11-12
  • golang interface类型转换怎么实现
    在Go语言中,可以通过类型断言来实现接口类型的转换。 使用类型断言的语法为: value, ok := interfaceVar.(...
    99+
    2023-10-20
    golang
  • SpringMVC @RequestBody Date类型的Json转换方式
    目录SpringMVC @RequestBody Date类型的Json转换通过GsonBuilder设置DateFormat的格式以零配置框架为例以零配置形式框架下的代码实现为例讲...
    99+
    2022-11-12
  • golang怎么对interface类型进行转换
    Go语言中的interface是一个非常特殊的类型,它可以抽象出任何具有一定特征的数据类型,并且可以进行类型转换。这一特性使得interface在Go语言中发挥着非常重要的作用,但是interface类型的转换也是一个比较复杂的问题,需要我...
    99+
    2023-05-14
    interface go语言 Golang
  • golang怎么进行数据类型转换
    Go语言数据类型转换将一个值从一种类型转换到另一种类型,便发生了类型转换。静态语言如c/c++,Java提供了隐性的类型转换,但对于golang这种强类型系统则不一样,golang并不支持自动类型转换或者隐性类型转换。由于Go语言不存在隐式...
    99+
    2022-11-22
    Golang Go go语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作