Go to file
程广 7b7115fecd ```
refactor(object): 调整JSONBaseObject处理顺序并添加遍历方法

- 调整了JSONObject.Put方法中类型判断的顺序,将JSONBaseObject类型的
  处理移到最后,避免与*JSONObject和*JSONArray的判断冲突

- 新增Entries()方法用于获取所有键值对映射
- 新增Values()方法用于获取所有值的切片
```
2026-02-11 17:51:27 +08:00
doc init gen 2026-02-11 17:26:30 +08:00
example ``` 2026-02-11 17:32:20 +08:00
LICENSE ``` 2026-02-11 17:39:28 +08:00
README.md ``` 2026-02-11 17:39:28 +08:00
array.go init gen 2026-02-11 17:26:30 +08:00
base.go init gen 2026-02-11 17:26:30 +08:00
go.mod init gen 2026-02-11 17:26:30 +08:00
init.go init gen 2026-02-11 17:26:30 +08:00
object.go ``` 2026-02-11 17:51:27 +08:00
property.go ``` 2026-02-11 17:32:20 +08:00
stringify.go ``` 2026-02-11 17:32:20 +08:00
values.go init gen 2026-02-11 17:26:30 +08:00

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 文件。