分享一個無需定義結構體解析json的包

xing393939 發表於 2021-12-01

說明

由於長期習慣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 協議》,轉載必須註明作者和本文連結