golang json 获取所有key_golang 如何读取 一个不确定的json中的值?

interface{}解析出来的是map[string]interface{}格式,只需要断言打印即可,如下:

package main

import (

"encoding/json"

"fmt"

)

func main() {

s := `{

"tagA" : "json string",

"tagB" : 1024,

"tagC" : null,

"tagD" : {

"tagE" : 2147483648,

"tagF" : 3.14159265358979

},

"tagG" : [

"json array",

1024,

{"tagH" : "json object"}

]

}`

var i interface{}

err := json.Unmarshal([]byte(s), &i)

if err != nil {

fmt.Println(err)

}

fmt.Println(i)

Assert(i)

}

func Assert(i interface{}) {

switch t := i.(type) {

case map[string]interface{}:

for k, v := range t {

switch t1 := v.(type) {

case map[string]interface{}:

fmt.Println(k, " : ")

Assert(t1)

case []interface{}:

fmt.Println(k, " : ")

for k1, v1 := range t1 {

switch t2 := v1.(type) {

case map[string]interface{}:

fmt.Println(k1, " : ")

Assert(t2)

default:

fmt.Println(k1, " : ", v1)

}

}

default:

fmt.Println(k, " : ", v)

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值