zoukankan      html  css  js  c++  java
  • golang 之进阶篇 json解析到结构体

    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)
    }

    执行结果:

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

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

    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)
     
    }
     
     

      

    执行结果:

      tmp2 = {Subjects:[Go C++ Python Test]}

     
  • 相关阅读:
    ie6-ie8中不支持opacity透明度的解决方法
    html5游戏-包围盒检测算法
    流媒体 8——因特网 tcp/ip
    流媒体 7——多媒体网络应用与交换
    流媒体 6——MPEG电视
    流媒体 5——MPEG声音
    流媒体 4——数字电视基础
    流媒体 3——彩色数字图像基础
    流媒体 2——数据无损压缩
    流媒体 1——概述+声音数字编码(pcm,dm......)
  • 原文地址:https://www.cnblogs.com/ztshuai/p/13819872.html
Copyright © 2011-2022 走看看