Golang JSON的编码和解析

简介: 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)
}


目录
相关文章
|
3月前
|
JSON Go 数据处理
golang 实现 ldif 数据转成 json 初探
上一篇我们分享了如何将 ldif 格式的数据,转换成 json 数据的思路并画相应的简图 这一次,我们就来实现一下
|
3月前
|
消息中间件 JSON 缓存
Golang:将日志以Json格式输出到Kafka2
Golang:将日志以Json格式输出到Kafka2
40 0
|
3月前
|
消息中间件 JSON 缓存
Golang:将日志以Json格式输出到Kafka1
Golang:将日志以Json格式输出到Kafka1
42 0
|
4月前
|
Go
Golang 基础案例集合:中文拼音转换、解析二维码、压缩 zip、执行定时任务
曾经,因为不够注重基础吃了好多亏。总是很喜欢去看那些高大上的东西,却忽略了最基本的东西。然后会错误的以为自己懂的很多,但是其实是沙堆中筑高台,知道很多高大上的架构,但是基础的东西却不太了解。我觉得,可
197 0
|
6月前
|
Go
Golang:user_agent解析HTTP用户代理User Agents
Golang:user_agent解析HTTP用户代理User Agents
69 0
|
6月前
|
JSON 搜索推荐 Go
Golang:golang-jwt/jwt/v4生成和解析jwt
Golang:golang-jwt/jwt/v4生成和解析jwt
93 0
|
6月前
|
Go
Golang:go-version一个对语义化版本进行解析、比较的库
Golang:go-version一个对语义化版本进行解析、比较的库
62 0
|
8月前
|
JSON Go 数据格式
Golang 处理复杂格式JSON数据(多类型混合)
Golang 处理复杂格式JSON数据(多类型混合)
166 0
|
11月前
|
Go Python
【Golang实战】——XPath解析网页
【Golang实战】——XPath解析网页
182 0
|
11月前
|
JSON Java Linux
知识分享之Golang——json与omitempty的使用
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
702 0
知识分享之Golang——json与omitempty的使用
相关产品
云迁移中心
推荐文章
更多
推荐镜像
更多