zoukankan      html  css  js  c++  java
  • json数据转换成结构体

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    type IT1 struct {
    	Company string `json:"company"`
    	Subjects []string `json:"subjects"`
    	IsOk bool  	`json:"isok"`
    	Price float64 `json:"price"`
    }
    
    type IT2 struct {
    	Company string `json:"company"`
    
    }
    
    func main(){
    	jsonbuff :=`{
    	"company": "zhczGO",
    	"isok": true,
    	"price": 99,
    	"subjects": [
    		"go",
    		"fabric",
    		"python",
    		"Test"
    	]
    }`
    
    var temp IT1
    err :=json.Unmarshal([]byte(jsonbuff),&temp)
    if err != nil{
    	fmt.Println("err=",err)
    	return
    }
    //fmt.Println("temp=",temp)
    fmt.Printf("tmp=%+v
    ",temp)
    
    var temp2 IT2
    err = json.Unmarshal([]byte(jsonbuff),&temp2)
    if err != nil{
    	fmt.Println("err=",err)
    	return
    }
    fmt.Printf("tmp2=%+v
    ",temp2)
    
    }
    

      

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    func main()  {
    	jsonbuff :=`{
    	"company": "zhczGO",
    	"isok": true,
    	"price": 99,
    	"subjects": [
    		"go",
    		"fabric",
    		"python",
    		"Test"
    	]
    }`
    
      //创建一个map
      m := make(map[string]interface{},4)
      err := json.Unmarshal([]byte(jsonbuff),&m) //一定要是地址
    
      if err != nil{
         fmt.Println("err=",err)
         return
      }
      fmt.Printf("m=%+v/n",m)
    
      //var str string
      //str = m["company"]//err 无法转换
    
      //类型断言
    	for key,value := range m  {
    		switch data := value.(type) {
    		case string:
    			//str = data
    			fmt.Printf("map[%s]的值类型为string,value=%s
    ",key,data)
    		case bool:
    			fmt.Printf("map[%s]的值类型为bool,value=%v
    ",key,data)
    		case float64:
    			fmt.Printf("map[%s]的值类型为float64,value=%f
    ",key,data)
    		case []string:
    			fmt.Printf("map[%s]的值类型为[]string,value=%v
    ",key,data)
    		case []interface{}:
    			fmt.Printf("map[%s]的值类型为interface{},value=%v
    ",key,data)
    		}
    	}
    
    	
    }
    

      

  • 相关阅读:
    .net实现依赖注入
    Model Validation(模型验证)
    TCP应用
    Jquery框架
    Fiddler工具
    Oracle从11.2.0.2开始,数据库补丁包是一个完整安装包(转)
    java路径中的空格问题(转)
    分析Java的类加载器与ClassLoader(二):classpath与查找类字节码的顺序,分析ExtClassLoader与AppClassLoader的源码
    java中path和classpath
    velocity-1.7中vm文件的存放位置
  • 原文地址:https://www.cnblogs.com/dqh123/p/12076319.html
Copyright © 2011-2022 走看看