golang笔记:json格式的使用

golang 中处理 json 使用内置的 encoding/json 标准库。下面示例介绍了通过 map 和结构体 struct 编码 json ,以及解析 json 到结构体中。

golang中json的使用

json encode

编码 json 使用 json.Marshal() 函数可以对一组数据进行 JSON 格式的编码。

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name  string
    Hobby string
}

func main() {
    // 通过 struct 生成 json
    p := Person{"zhang", "Golf"}
    b, err := json.Marshal(p)
    if err != nil {
        fmt.Println("json err ", err)
    }
    fmt.Println(string(b))

    // 通过 map 生成 json
    student := make(map[string]interface{})
    student["name"] = "Lucy"
    student["age"]  = 21
    student["sex"]  = "female"
    b2, err2 := json.Marshal(student)
    if err2 != nil {
        fmt.Println("json err ", err2)
    }
    fmt.Println(string(b2))
}

json decode

解码 json 使用 json.Unmarshal() 函数可以对一组数据进行 JSON 格式的解码。

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name  string   `json:"name"`
    Hobby []string `json:"hobby"`
    Age   int      `json:"age, string"` // 转换类型
    Addr  Addr     `json:"addr"`
}

type Addr struct {
    Province string `json:"province"`
    City     string `json:"city"`
}

func main() {

    // 解析json到结构体
    b := []byte(`{
        "age":"21",
        "name":"Lucy",
        "hobby":[
            "Golf", 
            "Basketball"
        ], 
        "addr": {
            "province": "Hubei", 
            "city": "Wuhan"
        }
    }`)

    var p Person

    if err := json.Unmarshal(b, &p); err3 != nil {
        fmt.Println("json err ", err)
    }

    fmt.Printf("%#v", p)
}

标题:golang笔记:json格式的使用

原文链接:https://beltxman.com/3816.html

若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。

发表评论

您的电子邮箱地址不会被公开。

Scroll to top