golang 切片 接口_golang json和接口切片

我在遍历包含接口切片的接口切片时遇到麻烦。

通过尝试使用返回JSON数据的API调用产生了此问题。返回的数据很多,根据请求的不同,结构也有很大不同。API文档中也没有JSON响应的结构,因此我试图实现一些用于处理任意JSON响应的方法。

当前,当进行初始调用时,将其放入map [string] interface

{}中,然后运行switch语句以确定每个元素的类型,当遇到一片接口时就会出现问题。我似乎对他们无能为力。

我试过几次使用sort包(特别是sort和slicestable函数)无济于事。

我收到的错误是:

interface conversion: interface {} is []interface {}, not map[string]interface {}

当我尝试映射接口切片时会发生这种情况,以便可以再次使用switch语句对其进行迭代。

output := make(map[string]interface{})

err = json.Unmarshal(body, &output)

fmt.Println(err)

identify(output)

return err

}

func identify(output map[string]interface{}) {

fmt.Printf("%T", output)

for a, b := range output {

switch bb := b.(type) {

case string:

fmt.Println("This is a string")

case float64:

fmt.Println("this is a float")

case []interface{}:

fmt.Println(" is []interface ", bb)

test := b.(map[string]interface{}) // falis here

fmt.Println("Success!", test)

default:

return

}

}

}

因此,基本问题是如何在不事先知道结构的情况下迭代嵌套的接口切片?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值