zoukankan      html  css  js  c++  java
  • go语言之进阶篇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]}
    

      

  • 相关阅读:
    kmp 算法
    jdk 和 cglib 的动态代理
    RestTemplate工具类
    bat脚本切换多个工程的分支
    字符串的左旋转
    输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。
    枚举类型在JPA中的使用
    拾遗
    YAML DEMO
    kiali 1.26 anonymous策略修改为token
  • 原文地址:https://www.cnblogs.com/nulige/p/10265922.html
Copyright © 2011-2022 走看看