99 lines
3.0 KiB
Markdown
99 lines
3.0 KiB
Markdown
# GJson
|
||
|
||
GJson 是一个功能强大且易于使用的 Go 语言 JSON 处理库。它提供了简洁的 API 来处理 JSON 数据,包括序列化、反序列化和属性访问等功能。
|
||
|
||
## 特性
|
||
|
||
- **面向对象设计**:提供 JSONBaseObject 接口及其实现(JSONObject、JSONArray、JSONValue 等)
|
||
- **灵活的属性访问**:支持通过路径访问嵌套 JSON 属性
|
||
- **完整的 JSON 类型支持**:支持字符串、数字、布尔值、null 等 JSON 数据类型
|
||
- **格式化输出**:提供类似 JavaScript 的 stringify 函数,支持格式化和紧凑两种输出方式
|
||
- **类型安全**:强类型系统保证运行时安全性
|
||
|
||
## 安装
|
||
|
||
```bash
|
||
go get git.kingecg.top/kingecg/gjson
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
```go
|
||
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](LICENSE) 文件。 |