当前位置: > > > > 检查 JSON 是对象还是数组
检查 JSON 是对象还是数组
来源:stackoverflow
2024-04-24 12:42:34
0浏览
收藏
你在学习Golang相关的知识吗?本文《检查 JSON 是对象还是数组》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!
问题内容
Go 中有没有一种简单的方法来检查给定的 JSON 是对象 {} 还是数组 []?
首先想到的就是把json.Unmarshal()变成一个接口,然后看看是变成了一个map,还是一个map的切片。但这似乎效率很低。
我可以检查第一个字节是 { 还是 [ 吗?或者是否有更好的方法已经存在。
解决方案
使用以下命令检测 []byte 值 data 中的 json 文本是否是数组或对象:
// get slice of data with optional leading whitespace removed.
// see rfc 7159, section 2 for the definition of json whitespace.
x := bytes.trimleft(data, " \t\r\n")
isarray := len(x) > 0 && x[0] == '['
isobject := len(x) > 0 && x[0] == '{'
此代码片段处理可选的前导空格,并且比解组整个值更有效。
由于 json 中的顶级值也可以是数字、字符串、布尔值或 nil,因此 isarray 和 isobject 的计算结果可能都为 false。当 json 无效时,值 isarray 和 isobject 也可以计算为 false。
使用类型开关来确定类型。这与 xay 的答案类似,但更简单:
var v interface{}
if err := json.Unmarshal(data, &v); err != nil {
// handle error
}
switch v := v.(type) {
case []interface{}:
// it's an array
case map[string]interface{}:
// it's an object
default:
// it's something else
}
终于介绍完啦!小伙伴们,这篇关于《检查 JSON 是对象还是数组》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~米云公众号也会发布Golang相关知识,快来关注吧!
