Golang JSON的编码和解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Golang JSON的编码和解析

go JSON解析 JSON编码

编码


定义一个结构体用来放需要进行JSON编码的数据,结构体的字段名必须是大写开头的可导出字段,否则在解析时会解析不出来

使用json.Marshal(v interface{}) ([]byte, error)进行JSON编码

  type Userinfo struct {
    Id       int `json:"id"`
    Username string `json:"username"`
  }
  u := &Userinfo{}
    u.Id = 1
    u.Username = "lauwen"
  j, err := json.Marshal(u)
  if err != nil {
      fmt.Println(err)
    }
    fmt.Println(string(j))

上述代码输出:

{"id":1,"username":"lauwen"}

解析


使用json.Unmarshal(data []byte, v interface{}) error来进行JSON数据的解析,可以看出第一个参数是[]byte类型数据,所以在使用时需要将字符串类型的JSON数据转换为[]byte类型。
  • 以下使用的解析的JSON字符串都由上一步编码而来,为[]byte类型,无需再转类型。
  • 使用的结构体类型也是上面编码时使用到的结构体,不做重复定义。

JSON解析为结构体

已知JSON结构的时候,可以定义一个结构体来存放JSON解析出来的数据

  var ui Userinfo
  err = json.Unmarshal(j, &ui)
  fmt.Println(ui)

以上代码输出:

{1 lauwen}

JSON解析为map

不清楚JSON数据结构时,可以使用map的来存放JSON解析出来的数据;如下,首先定义了一个map类型数据来接收解析后的JSON数据

  var dj map [string] interface{}
  err = json.Unmarshal(j, &dj)
  fmt.Println(dj)

以上代码输出:

map[id:1 username:lauwen]

完整代码


package main
import (
    "encoding/json"
    "fmt"
)
func main() {
  type Userinfo struct {
    Id       int `json:"id"`
    Username string `json:"username"`
  }
  u := &Userinfo{}
    u.Id = 1
    u.Username = "lauwen"
  j, err := json.Marshal(u)
  if err != nil {
      fmt.Println(err)
    }
    fmt.Println(string(j))
  var ui Userinfo
  err = json.Unmarshal(j, &ui)
  fmt.Println(ui)
  var dj map [string] interface{}
  err = json.Unmarshal(j, &dj)
  fmt.Println(dj)
}


目录
相关文章
|
1月前
|
SQL 存储 JSON
SQL,解析 json
SQL,解析 json
65 8
|
16天前
|
算法 量子技术
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
前端大模型入门(三):编码(Tokenizer)和嵌入(Embedding)解析 - llm的输入
本文介绍了大规模语言模型(LLM)中的两个核心概念:Tokenizer和Embedding。Tokenizer将文本转换为模型可处理的数字ID,而Embedding则将这些ID转化为能捕捉语义关系的稠密向量。文章通过具体示例和代码展示了两者的实现方法,帮助读者理解其基本原理和应用场景。
118 1
|
2月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
191 2
|
2月前
|
JSON 前端开发 JavaScript
解析JSON文件
解析JSON文件
114 9
|
1月前
|
机器学习/深度学习 人工智能
【AI大模型】深入Transformer架构:编码器部分的实现与解析(下)
【AI大模型】深入Transformer架构:编码器部分的实现与解析(下)
|
1月前
|
JSON JavaScript API
商品详情数据接口解析返回的JSON数据(API接口整套流程)
商品详情数据接口解析返回的JSON数据是API接口使用中的一个重要环节,它涉及从发送请求到接收并处理响应的整个流程。以下是一个完整的API接口使用流程,包括如何解析返回的JSON数据:
|
2月前
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
150 0
|
2月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
98 4
Golang语言之管道channel快速入门篇
|
2月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
62 4
Golang语言文件操作快速入门篇