分享一个无需定义结构体解析json的包
说明
由于长期习惯PHP操作json,可以直接解析并静默处理异常返回一个默认值,不习惯Go需要先定义结构体再解析json的方式,于是有了此包。
使用示例
// 获取包:go get github.com/xing393939/jsonobject
import "github.com/xing393939/jsonobject"
jsonContent := `{
"isMaster": false,
"metadata": {
"name": "oracle"
},
"tags": ["db", "sql"]
}`
jo := jsonobject.NewJsonObject(jsonContent)
println(jo.GetBool("isMaster"))
println(jo.GetJsonObject("metadata").GetString("name"))
joArr := jo.GetJsonObjectSlice("tags")
for _, joRow := range joArr {
println(joRow.GetString())
}
jsonContent = `[{"name":"John", "score":100}, {"name":"Tom", "score":200}]`
jo = jsonobject.NewJsonObject(jsonContent)
joArr = jo.GetJsonObjectSlice()
for _, joRow := range joArr {
println(joRow.GetString("name"), joRow.GetInt("score"))
}
类方法说明
类方法是可变参数:
- 如果不传参数:就表示把当前JsonObject对象转换成对应的string、int、bool等;
- 如果传一个参数param:则表示获取当前JsonObject对象元素键名为param的键值。
类方法 | 如果类型不匹配 |
---|---|
GetString | 返回空字符 |
GetInt | 返回0 |
GetBool | 返回false |
GetInt64 | 返回0 |
GetFloat64 | 返回0 |
GetInt64 | 返回0 |
GetJsonObject | (类型一定匹配) |
GetJsonObjectSlice | 返回空切片 |
本作品采用《CC 协议》,转载必须注明作者和本文链接
开发包之前可以多搜索一下,已经有很多轮子了
可以看看
tidwall/gjson
和json-iterator/go