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++制作LeetCode刷题小技巧-错题记录本

    下面是针对“如何用C++制作LeetCode刷题小技巧-错题记录本”的完整攻略,具体步骤如下: 步骤一:创建一个C++项目 首先,打开你喜欢的C++ IDE,创建一个新项目。你可以使用任何你想用的IDE,比如 Visual Studio、Code::Blocks、Dev-Cpp等等。 步骤二:下载LeetCode的数据结构 在C++中,数据结构非常重要。因此…

    C 2023年5月23日
    00
  • 整型数据在内存中存储方式的讲解

    当我们声明一个整型变量时,计算机会在内存中分配一段连续的存储空间来存储该变量的值。在C语言中,整型数据的存储空间占用长度是根据数据类型决定的,在32位系统中一般为4字节(32位),在64位系统中一般为8字节(64位)。 整型数据在内存中存储方式是使用二进制补码表示。 二进制补码是一种表示有符号整数的方法,它对一个数的正负没有区别,而且在计算机中操作速度更快,…

    C 2023年5月23日
    00
  • MySQL实例精讲单行函数以及字符数学日期流程控制

    MySQL实例精讲单行函数以及字符数学日期流程控制 MySQL提供了许多单行函数来处理数据,例如字符串处理、数学计算、日期时间处理等。同时,MySQL也提供了常见的流程控制功能,如if语句、case语句等。本文将详细讲解MySQL的单行函数以及流程控制功能。 单行函数 MySQL的单行函数包括了字符串函数、数值函数、日期函数等,下面将分别介绍。 字符串函数 …

    C 2023年5月22日
    00
  • C语言 结构体和联合体的区别

    C语言 结构体和联合体的区别 什么是结构体 在 C 语言中,结构体是一种自定义数据类型,它允许程序员将不同类型的变量组合在一起,形成一个数据集合。结构体是由一组多个变量组成的新的数据类型,在定义结构体时,需要定义这个结构体包含的成员变量的类型和名称。 通常定义结构体的方式为: struct 结构体名称{ 成员变量1; 成员变量2; ……….. 成…

    C 2023年5月10日
    00
  • 解析Linux下的时间函数:设置以及获取时间的方法

    解析Linux下的时间函数: 设置以及获取时间的方法 在Linux系统中,我们经常需要获取当前时间,或者将时间设置为指定的值。本文将介绍Linux系统下获取和设置时间的相关函数以及用法。 获取当前时间 在Linux系统下,我们可以使用time()函数获取当前“时间戳”,即从1970年1月1日0时0分0秒(UTC)起到现在的秒数。 #include <s…

    C 2023年5月23日
    00
  • c++编写简单的计算器程序

    下面是“C++编写简单的计算器程序”的攻略: 1. 需求分析 在开始编写程序之前,需要先确定程序的需求,即需要实现哪些功能。对于一个简单的计算器程序来讲,它需要实现以下功能: 接收用户输入的两个数字 接收用户输入的运算符 根据用户输入的运算符进行计算,并输出结果 2. 代码实现 接下来,我们开始编写代码。为了方便起见,我们将代码分为以下几个步骤: 2.1 接…

    C 2023年5月23日
    00
  • C语言如何实现翻转字符串中的单词

    翻转字符串中的单词是C语言中常用的字符串操作之一,实现该功能的主要思路如下: 读入原字符串 按空格将字符串分割成单词数组 翻转单词数组 按照空格重新组合单词数组形成新的字符串 以下是实现该功能的完整代码: #include <stdio.h> #include <string.h> void reverseWords(char* s)…

    C 2023年5月23日
    00
  • C语言实现socket简单通信实例

    下面我将为你讲解“C语言实现socket简单通信实例”的完整攻略。 1. 什么是Socket? Socket(套接字)是计算机网络中对TCP/IP协议的抽象,是一组接口和规范,用于实现网络通信或者进程间通信。利用Socket,程序员可以方便的开发出网络应用程序,实现进程之间的网络通信和资源共享。 2. C语言实现Socket通信要点 在C语言中,我们可以通过…

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