refactor(object): 调整JSONBaseObject处理顺序并添加遍历方法 - 调整了JSONObject.Put方法中类型判断的顺序,将JSONBaseObject类型的 处理移到最后,避免与*JSONObject和*JSONArray的判断冲突 - 新增Entries()方法用于获取所有键值对映射 - 新增Values()方法用于获取所有值的切片 ``` |
||
|---|---|---|
| doc | ||
| example | ||
| LICENSE | ||
| README.md | ||
| array.go | ||
| base.go | ||
| go.mod | ||
| init.go | ||
| object.go | ||
| property.go | ||
| stringify.go | ||
| values.go | ||
README.md
GJson
GJson 是一个功能强大且易于使用的 Go 语言 JSON 处理库。它提供了简洁的 API 来处理 JSON 数据,包括序列化、反序列化和属性访问等功能。
特性
- 面向对象设计:提供 JSONBaseObject 接口及其实现(JSONObject、JSONArray、JSONValue 等)
- 灵活的属性访问:支持通过路径访问嵌套 JSON 属性
- 完整的 JSON 类型支持:支持字符串、数字、布尔值、null 等 JSON 数据类型
- 格式化输出:提供类似 JavaScript 的 stringify 函数,支持格式化和紧凑两种输出方式
- 类型安全:强类型系统保证运行时安全性
安装
go get git.kingecg.top/kingecg/gjson
快速开始
package main
import (
"fmt"
"git.kingecg.top/kingecg/gjson"
)
func main() {
// 创建一个 JSONObject
obj := gjson.NewJSONObject()
obj.Put("name", gjson.NewJSONString("张三").Value())
obj.Put("age", gjson.NewJSONNumber(25).Value())
// 创建嵌套对象
address := gjson.NewJSONObject()
address.Put("city", gjson.NewJSONString("北京").Value())
obj.Put("address", address.GetData())
// 序列化为 JSON 字符串
jsonStr, _ := obj.ToJSON()
fmt.Printf("JSON对象: %s\n", jsonStr)
// 使用 GetProperty 访问嵌套属性
defaultValue := gjson.NewJSONString("default")
city, _ := gjson.GetProperty(obj, "address.city", defaultValue)
if str, ok := city.(*gjson.JSONString); ok {
fmt.Printf("城市: %s\n", str.Value())
}
// 使用 Stringify 函数
stringified, _ := gjson.Stringify(obj, " ")
fmt.Printf("格式化输出:\n%s\n", stringified)
}
API 文档
基础对象
JSONBaseObject:所有 JSON 对象的基础接口JSONObject:表示 JSON 对象JSONArray:表示 JSON 数组JSONValue:表示简单值对象,包括 JSONString、JSONNumber、JSONBool、JSONNull
主要功能
创建对象
NewJSONObject():创建新的 JSONObject 实例NewJSONArray():创建新的 JSONArray 实例NewJSONString(value):创建新的 JSONString 实例NewJSONNumber(value):创建新的 JSONNumber 实例NewJSONBool(value):创建新的 JSONBool 实例NewJSONNull():创建新的 JSONNull 实例
序列化和反序列化
ToJSON()/FromJSON(jsonStr):转换为/从 JSON 字符串ToString()/FromString(str):转换为/从字符串
属性操作
GetProperty(obj JSONBaseObject, propertyPath string, defaultValue JSONBaseObject):获取属性值SetProperty(obj JSONBaseObject, propertyPath string, value JSONBaseObject):设置属性值
格式化输出
Stringify(obj JSONBaseObject, space ...string):类似 JavaScript 的 stringify 函数PrettyPrint(obj JSONBaseObject):格式化打印 JSON 对象Compact(obj JSONBaseObject):将 JSON 对象转换为紧凑格式
贡献
欢迎提交 Issue 和 Pull Request 来改进这个项目!
许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。