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]}
  • 相关阅读:
    FZU 2112 并查集、欧拉通路
    HDU 5686 斐波那契数列、Java求大数
    Codeforces 675C Money Transfers 思维题
    HDU 5687 字典树插入查找删除
    HDU 1532 最大流模板题
    HDU 5384 字典树、AC自动机
    山科第三届校赛总结
    HDU 2222 AC自动机模板题
    HDU 3911 线段树区间合并、异或取反操作
    CodeForces 615B Longtail Hedgehog
  • 原文地址:https://www.cnblogs.com/cxy2020/p/14479546.html
Copyright © 2011-2022 走看看