跳转到主要内容

【Go语言中级开发】结构到 JSON 的 Golang 数组

下面的代码是将结构数组转换为 JSON 的示例。

package main

import (
"log"
"encoding/json"
)

type Fruit struct {
Name string `json:"name"`
Quantity int `json:"quantity"`
}

func main() {
a := Fruit{Name:"Apple",Quantity:1}
o := Fruit{Name:"Orange",Quantity:2}

var fs []Fruit
fs = append(fs, a)
fs = append(fs, o)
log.Println(fs)

j, _ := json.Marshal(fs)
log.Println(string(j))

j, _ = json.MarshalIndent(fs, "", " ")
log.Println(string(j))
}

 

运行它将产生如下输出。

【Go语言中级开发】Golang 中 JSON 的完整指南(附示例)

在这篇文章中,我们将学习如何以最简单的方式在 Go 中使用 JSON。

我们将学习如何将 JSON 原始数据(字符串或字节)转换为 Go 类型,如结构、数组和切片,以及非结构化数据,如映射和空接口。

banner

JSON 被用作数据序列化的事实标准,在本文结束时,您将熟悉如何在 Go Unmarshaling Raw JSON Data 中对 JSON 进行编组(编码)和解组(解码)

Unmarshaling Raw JSON Data


Go 的 JSON 标准库提供的 Unmarshal 函数可以让我们以 []byte 变量的形式解析原始 JSON 数据。

我们可以将 JSON 字符串转换为字节,并将数据解组为变量地址:

【Go语言中级开发】在 Go 中编写 JSON REST API 的技巧

本文提供了有关使用普通 Go HTTP 处理程序编写 JSON REST API 的随机提示。

  • 使用匿名类型解析 JSON
  • 使用 http.MaxBytesReader 限制请求长度
  • 使用 map[string]interface{} 生成 JSON
  • 使用 MarshalJSON 自定义 JSON 输出
  • 使用中间件处理错误
  • 使用结构对处理程序进行分组
  • 使用分段/编码

使用匿名类型解析 JSON


而不是声明全局类型:

【Go语言基础】如何在Golang中使用JSON

在现代程序中,一个程序和另一个程序之间的通信很重要。无论是检查用户是否可以访问另一个程序的 Go 程序、获取显示在网站上的过去订单列表的 JavaScript 程序,还是从文件中读取测试结果的 Rust 程序,程序都需要一种方法来为其他程序提供数据。然而,许多编程语言都有自己的内部存储数据的方式,这是其他语言无法理解的。为了允许这些语言进行交互,需要将数据转换为他们都能理解的通用格式。其中一种格式 JSON 是一种通过 Internet 以及在同一系统中的程序之间传输数据的流行方式