zoukankan      html  css  js  c++  java
  • golang json

    ...

    1,

    //wrong,别忘了 开头的 {"xxx": 和结尾的 }
    ss=[]byte(`[{"a":"a","b":"b"},{"a":"aa","b":"bb"}]`)
    //right
    js1 := []byte(`{"huzh":[{"a":"a","b":"b"},{"a":"aa","b":"bb"}]}`)
    type S1 struct {
    Aa string `json:"a"`
    }
    type S2 struct {
    Huzh []S1 `json:"huzh"`
    }

    2, 更牛逼的动态解析去这里

    https://eagain.net/articles/go-dynamic-json/

    3.合并以前的

    package huzhm
    
    import (
        "bytes"
        "encoding/json"
        "fmt"
        "io/ioutil"
        "net/http"
    )
    
    type Result struct {
        Token string `json:"token"`
        UiVersion string `json:"ui_version"`
    }
    
    type Body struct {
        Jsonrpc string `json:"jsonrpc"`
        Result Result
        Id int `json:"id"`
        
    }
    
    func GenUrl() (string){
        url := "http://1.1.13.10:9000/minio/webrpc"
        fmt.Println("URL:>", url)
    
        var jsonStr = []byte(`{"id":1,"jsonrpc":"2.0","params":{"username":"admin","password":"admin123"}, "method":"Web.Login"}`)
        req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
        req.Header.Set("User-Agent", "Mozilla")
        req.Header.Set("Content-Type", "application/json")
    
        client := &http.Client{}
        resp, err := client.Do(req)
        if err != nil {
            panic(err)
        }
        defer resp.Body.Close()
    
        fmt.Println("response Status:", resp.Status)
        fmt.Println("response Headers:", resp.Header)
        body, _ := ioutil.ReadAll(resp.Body)
        fmt.Println("response Body:", string(body))
        ss := string(body)
        fmt.Println(ss)
        var r Body
        err = json.Unmarshal([]byte(ss), &r)
        if err != nil {
            fmt.Printf("err was %v", err)
        }
        url1 := "http://1.1.13.10:9000/minio/download/huzh/L1/big.txt?token=" + r.Result.Token
        return url1
    }
    

    4, 其他例子

    func FM4()  {
    	var xx interface{}
    	if err:=json.Unmarshal([]byte(`[["a1","b1","c1"],["a1","b1","c1"]]`),&xx); err != nil{
    		log.Println("happend")
    		return
    	}
    	log.Println("xx===>",xx.([]interface{}))
    	for k,v := range xx.([]interface{}){
    		log.Println(k,v.([]interface{}))
    		li:=v.([]interface{})
    		for k1,v1 :=range li{
    			log.Println("l2===>",k1,v1.(string))
    		}
    	}
    
    }
    func FM5()  {
    	var xx interface{}
    	s1 := `[[
    ["a","b"],
    ["a","b"],
    ["a","b"]
    ],
    [
    ["a","b"],
    ["a","b"],
    ["a","b"]
    ]
    ]`
    	err := json.Unmarshal([]byte(s1), &xx)
    	if err != nil {
    		return
    	}
    	for _,v := range xx.([]interface{}){
    		tx:=v.([]interface{})
    		//log.Println(k,v.([]interface{}))
    		for k1,v1 := range tx{
    			log.Println("k1v1",k1,v1)
    			txx:=v1.([]interface{})
    			for k2,v2:=range txx{
    				log.Println("k2,v2===>",k2,v2.(string))
    			}
    		}
    	}
    }
    

      

  • 相关阅读:
    angular 1.26 版本 window.history.back() 自动去顶部
    CK editor 制作 ”小“plugin
    CSS 3 过渡效果之jquery 的fadeIn ,fadeOut
    了解 : angular controller link nginit 顺序
    规范 : jobbox 中英文
    了解 : angular translate 和 google translate 和 微软 translate
    业务逻辑 : 未完 : easybook.com
    List和ArrayList的区别
    Select什么时候会产生重作日志
    几点对专用服务器与共享服务器差异的理解
  • 原文地址:https://www.cnblogs.com/eiguleo/p/14755715.html
Copyright © 2011-2022 走看看