Go JSON编码与解码的实现

Go JSON编码与解码的实现

在Go语言中,JSON编码与解码非常常见,Golang标准库提供了encoding/json包来支持JSON格式数据的序列化和反序列化。接下来将详细讲解如何使用encoding/json包进行JSON编码与解码。

JSON编码

JSON编码,指将Go语言中的结构体等数据类型转换成JSON格式的字符串。在Go语言中,使用json.Marshal()函数进行JSON编码。

示例1:将一个结构体转换成JSON格式字符串,输出结果。

type Book struct {
    Title string `json:"title"`
    Author string `json:"author"`
    Price float64 `json:"price"`
}

book := Book{
    Title: "Go语言编程",
    Author: "Xiao Lin",
    Price: 30.5,
}

jsonStr, err := json.Marshal(book)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("%s\n", jsonStr)

以上代码输出结果为:

{"title":"Go语言编程","author":"Xiao Lin","price":30.5}

示例2:JSON编码一个嵌套的结构体,并将结果输出到控制台。

type Address struct {
    City string `json:"city"`
    Phone string `json:"phone"`
}

type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
    Address Address `json:"address"`
}

person := Person{
    Name: "Alice",
    Age: 20,
    Address: Address{
        City: "Beijing",
        Phone: "123456",
    },
}

jsonStr, err := json.Marshal(person)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("%s\n", jsonStr)

以上代码输出结果为:

{"name":"Alice","age":20,"address":{"city":"Beijing","phone":"123456"}}

JSON解码

JSON解码,指将JSON格式的字符串转换成对应的Go语言数据类型。在Go语言中,使用json.Unmarshal()函数进行JSON解码。

示例3:将以JSON格式编码的字符串解码,输出结果。

jsonStr := `{"title":"Go语言编程","author":"Xiao Lin","price":30.5}`
var book Book
err := json.Unmarshal([]byte(jsonStr), &book)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("%+v\n", book)

以上代码输出结果为:

{Title:Go语言编程 Author:Xiao Lin Price:30.5}

示例4:JSON解码,演示如何解析一个“动态”JSON对象。

jsonStr2 := `{"name":"Bob","age":23,"address":{"city":"Shanghai","phone":"654321"}}`
var dynamicMap map[string]interface{}
err = json.Unmarshal([]byte(jsonStr2), &dynamicMap)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Name: %v, Age: %v, City: %v, Phone: %v\n",
    dynamicMap["name"], dynamicMap["age"],
    dynamicMap["address"].(map[string]interface{})["city"],
    dynamicMap["address"].(map[string]interface{})["phone"])

以上代码输出结果为:

Name: Bob, Age: 23, City: Shanghai, Phone: 654321

总结

encoding/json包提供了Go语言中JSON编码与解码的基础API。我们可以使用它来编码和解码JSON格式的数据。通过本文介绍的示例,相信读者已经学会了如何使用encoding/json进行JSON编码和解码的基本使用技巧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go JSON编码与解码的实现 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++代码实现扫雷游戏

    下面我将详细讲解C++代码实现扫雷游戏的完整攻略。 1. 扫雷游戏规则 扫雷游戏是一款经典的单人益智类游戏,游戏的目标是在没有触雷的情况下,揭示所有不是地雷的格子。游戏中有三种类型的格子:未揭开的安全格子、未揭开的地雷格子和已揭开的数字格子。在游戏开始时,玩家需要根据每次揭开的数字格子来推测哪些格子是地雷,最终揭开所有不是地雷的格子即可胜利。 2. 游戏实现…

    C 2023年5月24日
    00
  • 浅谈Gin框架中bind的使用

    下面是关于在Gin框架中使用bind的攻略。 什么是bind 在Gin框架中,你可以使用bind来绑定请求的内容到指定的结构体上。如果请求传过来的参数符合结构体中定义的字段类型和名称,那么bind操作就可以将这些参数值绑定到对应的结构体字段上,从而方便我们在后续的处理中使用。bind可以用于解析请求的body、header、query等多种方式获取的参数。 …

    C 2023年5月23日
    00
  • CCleaner有哪些功能? CCleaner工具菜单的详细介绍

    CCleaner是一款非常实用的计算机清理工具,可以帮助我们快速、安全地清理电脑中的垃圾文件,加快系统运行速度,提高系统稳定性。下面是关于CCleaner的功能和工具菜单的详细介绍。 CCleaner的功能 CCleaner主要提供以下四个功能: 1. 清理系统垃圾文件 CCleaner可以自动清理电脑中的垃圾文件,包括浏览器的历史记录、cookies、临时…

    C 2023年5月23日
    00
  • Win7系统运行游戏应用程序报错0xc000007d无法正常启动

    问题描述: 在运行Win7系统中的某些游戏或应用程序时,出现了错误代码0xc000007d,导致无法正常启动。 解决方案: 确认系统与程序兼容性 首先,需要确认系统与待运行的游戏或应用程序之间的兼容性。Win7系统比较老旧,一些新的软件或应用需要更高版本的系统支持。可以查看软件或应用程序的官方网站,查看其支持的最低操作系统版本。如果程序不兼容,将无法运行。如…

    C 2023年5月24日
    00
  • freebsd 常用命令

    下面是关于FreeBSD常用命令的攻略: 目录 基本命令 文件与目录操作命令 系统管理命令 其他命令 基本命令 以下是FreeBSD的常用基本命令: ls:列出目录或文件列表; pwd:显示当前目录; cd:改变工作目录; rm:删除一个或多个文件或目录; cp:复制文件或目录; mv:移动文件或目录; mkdir:创建新的目录。 以下是示例说明: 列出当前…

    C 2023年5月24日
    00
  • 电脑开机蓝屏显示错误代码0xc0000034该怎么办?

    电脑开机蓝屏显示错误代码0xc0000034该怎么办? 在电脑开机时,有时候会遇到蓝屏错误,其中一个比较常见的错误代码是0xc0000034。这一错误代码通常与启动配置文件有关,可能是文件损坏或者缺失引起的。在这里,我们提供一些可能有效的解决方案。 方案一:使用Windows恢复环境 准备一张 Windows 安装盘或者 U 盘,将其插入电脑并启动电脑。 进…

    C 2023年5月23日
    00
  • 进程

    进程、轻量级进程和线程 进程在教科书中通常定义:进程是程序执行时的一个实例,可以把它看作充分描述程序已经执行到何种程度的数据结构的汇集。 从内核的观点,进程的目的就是担当分配系统资源(CPU时间、内存等)的实体。   当一个进程被创建时,他几乎于父进程相同。它接受父进程地址空间的一个(逻辑)拷贝,并从进程创建系统调用的下一条指令开始执行于父进程相同的代码。尽…

    C 2023年4月27日
    00
  • C++内嵌汇编示例详解

    对于C++内嵌汇编示例的详解,可以从以下几个方面进行讲解: 1.概述:什么是内嵌汇编 内嵌汇编是指将汇编代码嵌入到C或C++程序中的技术,可以直接在C++源代码中嵌入汇编语言,通过内嵌汇编可以利用汇编语言的精细化控制实现高效的代码。 2.内嵌汇编说明 在C++中内嵌汇编可以使用asm关键字来实现,类似于以下形式: asm (assembly content)…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部