zoukankan      html  css  js  c++  java
  • go语言之进阶篇json解析到结构体,Unmarshal使用

    1、json解析到结构体

    示例:

    package main
     
    import (
        "encoding/json"
        "fmt"
    )
     
    type IT struct {
        Company  string   `json:"company"`
        Subjects []string `json:"subjects"` //二次编码
        IsOk     bool     `json:"isok"`
        Price    float64  `json:"price"`
    }
     
    func main() {
     
        jsonBuf := `
        {
        "company": "itcast",
        "subjects": [
            "Go",
            "C++",
            "Python",
            "Test"
        ],
        "isok": true,
        "price": 666.666
    }`
     
        var tmp IT                                   //定义一个结构体变量
        err := json.Unmarshal([]byte(jsonBuf), &tmp) //第二个参数要地址传递
        if err != nil {
            fmt.Println("err = ", err)
            return
        }
        //fmt.Println("tmp = ", tmp)
        fmt.Printf("tmp = %+v ", tmp)
    }

    执行结果:

    1
    tmp = {Company:itcast Subjects:[Go C++ Python Test] IsOk:true Price:666.666}

      

    示例2: 定义结构体,解析你想生成的字段

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    package main
     
    import (
        "encoding/json"
        "fmt"
    )
     
    type IT struct {
        Company  string   `json:"company"`
        Subjects []string `json:"subjects"//二次编码
        IsOk     bool     `json:"isok"`
        Price    float64  `json:"price"`
    }
     
    func main() {
     
        jsonBuf := `
        {
        "company""itcast",
        "subjects": [
            "Go",
            "C++",
            "Python",
            "Test"
        ],
        "isok": true,
        "price": 666.666
    }`
     
        var tmp IT                                   //定义一个结构体变量
        err := json.Unmarshal([]byte(jsonBuf), &tmp) //第二个参数要地址传递
        if err != nil {
            fmt.Println("err = ", err)
            return
        }
     
        type IT2 struct {
            Subjects []string `json:"subjects"//二次编码
        }
     
        var tmp2 IT2
        err = json.Unmarshal([]byte(jsonBuf), &tmp2) //第二个参数要地址传递
        if err != nil {
            fmt.Println("err = ", err)
            return
        }
        fmt.Printf("tmp2 = %+v ", tmp2)
     
    }

    执行结果:

    1
    tmp2 = {Subjects:[Go C++ Python Test]}
  • 相关阅读:
    AC日记——与7无关的数 openjudge 1.5 39
    AC日记——计算多项式的导函数 openjudge 1.5 38
    AC日记——矩阵交换行 openjudge 1.8 01
    AC日记——阶乘和 openjudge 1.6 15
    AC日记——求10000以内n的阶乘 openjudge 1.6 14
    逻辑运算
    PLC控制设计的基本步骤
    Micropython通用控制
    class Pin --控制I/O引脚
    Micropython入门实操心得
  • 原文地址:https://www.cnblogs.com/cxy2020/p/14479546.html
Copyright © 2011-2022 走看看