zoukankan      html  css  js  c++  java
  • go语言之进阶篇json解析到map

    1、json解析到map(通过类型断言,找到值和value类型)

    示例:

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    func main() {
    	jsonBuf := `
    	{
        "company": "itcast",
        "subjects": [
            "Go",
            "C++",
            "Python",
            "Test"
        ],
        "isok": true,
        "price": 666.666
    }`
    
    	//创建一个map
    	m := make(map[string]interface{}, 4)
    
    	err := json.Unmarshal([]byte(jsonBuf), &m) //第二个参数要地址传递
    	if err != nil {
    		fmt.Println("err = ", err)
    		return
    	}
    	fmt.Printf("m = %+v
    ", m)
    
    	var str string
    
    	//类型断言, 值,它是value类型
    	for key, value := range m {
    		//fmt.Printf("%v ============> %v
    ", key, value)
    		switch data := value.(type) {
    		case string:
    			str = data
    			fmt.Printf("map[%s]的值类型为string, value = %s
    ", key, str)
    		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)
    		}
    
    	}
    
    }
    

    执行结果:

    m = map[isok:true price:666.666 company:itcast subjects:[Go C++ Python Test]]
    
    map[company]的值类型为string, value = itcast
    map[subjects]的值类型为[]interface, value = [Go C++ Python Test]
    map[isok]的值类型为bool, value = true
    map[price]的值类型为float64, value = 666.666000
    

      

  • 相关阅读:
    Fluxbox 1.0 RC 2
    Cairo 1.2.0
    Transmission 0.6.1
    Xara LX Xtreme 0.5 Rev1175
    Totem 1.4.2
    ImageMagick 6.2.81
    恢复 Firefox 和 Thunderbird 图标
    Conky 1.4.2
    BitTorrent 4.20.0
    Geany 疾速简便的集成启示情况
  • 原文地址:https://www.cnblogs.com/nulige/p/10266530.html
Copyright © 2011-2022 走看看