Parse JSON HTTP response using golang

后端 未结 4 1569
有刺的猬
有刺的猬 2020-12-19 09:25

I am trying to get the value of say \"ip\" from my following curl output:

{  
  \"type\":\"example\",
  \"data\":{  
    \"name\":\"abc\",
    \"labels\":{           


        
4条回答
  •  北海茫月
    2020-12-19 09:33

    You can write your own decoder or use existing third-party decoders. For instance, github.com/buger/jsonparser could solve your problem by iterating throw array (two times).

    package main
    
    import (
        "github.com/buger/jsonparser"
        "fmt"
    )
    
    var data =[]byte(`{
      "type":"example",
      "data":{
        "name":"abc",
        "labels":{
          "key":"value"
        }
      },
      "subsets":[
        {
          "addresses":[
            {
              "ip":"192.168.103.178"
            }
          ],
          "ports":[
            {
              "port":80
            }
          ]
        }
      ]
    }`)
    
    func main() {
        jsonparser.ArrayEach(data, func(value []byte, dataType jsonparser.ValueType, offset int, err error) {
            jsonparser.ArrayEach(value, func(value []byte, dataType jsonparser.ValueType, offset int, err error) {
                v, _, _, err := jsonparser.Get(value, "ip")
                if err != nil {
                    return
                }
                fmt.Println("ip: ", string(v[:]))
            }, "addresses")
        }, "subsets")
    }
    

    Output: ip: 192.168.103.178

提交回复
热议问题