分享一个无需定义结构体解析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 协议》,转载必须注明作者和本文链接
讨论数量: 1

开发包之前可以多搜索一下,已经有很多轮子了

可以看看tidwall/gjsonjson-iterator/go

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!