FASTJSON

fastjson是java版本的fastjson库的api做一个翻译,方便习惯java的人操作json数据

  • 主要适用场景:层级和字段都不能确定的json
  • 这个库并不实现高性能json解析,依赖标准库json
  • 这个库并没有100%实现java版的api

安装

go get -u github.com/wuyunhua1987/fastjson

Usage

  • 解析一段json字符串

import "github.com/wuyunhua1987/fastjson"
// json object
jsonObjByte := []byte("{\"beijing\":0.013,\"shanghai\":0.0113,\"guangzhou\":0.0104,\"shenzhen\":0.0117,\"hangzhou\":0.0113,\"chengdu\":0.0114}")
jsonObj, err := NewJSONObject(jsonObjByte)

// json array
jsonArrByte := []byte("[\"beijing\",\"shanghai\",\"guangzhou\",\"shenzhen\",\"hangzhou\",\"chengdu\"]")
jsonArr, err := NewJSONArray(jsonArrByte)
  • 检测

// 零值检测
isZero := jsonObj.IsZero()
// 包含键检测
isExist := jsonObj.ContainsKey("beijing")
// 包含索引检测
inRange := jsonArr.ContainsIndex(1)
  • 获取数值

// int
_, err := jsonObj.GetInt("beijing")
// int32
_, err := jsonObj.GetInt32("beijing")
// int64
_, err := jsonObj.GetInt64("beijing")
// float32
_, err := jsonObj.GetFloat32("shanghai")
// float64
_, err := jsonObj.GetFloat64("shanghai")
  • 获取字符串

// string
_, err := jsonObj.GetString("beijing")
  • 获取bool值

// bool
_, err := jsonObj.GetBool("beijing")
  • 获取嵌套

// JSONObject
_, err := jsonObj.GetJSONObject("beijing")
// JSONArray
_, err := jsonObj.GetJSONArray("beijing")
  • 更新值

// JSONObject
err := jsonObj.Put("wuhan", 0.321)
// JSONArray 追加
err := jsonArr.Put("wuhan")
  • 转json字符串
_, err := json.Marshal(jsonObj)
  • 转结构体

type agerange struct {
    R1 float32 `json:"beijing"`
    R2 float32 `json:"shanghai"`
}
s := new(agerange)
err := jsonObj.Scan(s)

https://github.com/wuyunhua1987/fastjson