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