Documentation
¶
Overview ¶
Package gcjson 提供基于 gjson 的高性能 JSON 查询能力。
特点:
- 零反序列化:无需 json.Unmarshal,直接路径访问 JSON 数据。
- 零或极少分配:多数查询仅需 0~2 次内存分配。
- 泛型直达:支持 Go 泛型 API,直接返回指定类型。
- 支持数组、对象遍历,以及路径下钻(drill)。
输入类型:
- 仅接受 []byte 或 string 类型作为输入。
内部依赖:
- 使用 gjson 进行路径解析与取值。
示例 ¶
基础用法:
jsonData := []byte(`{"name":"Alice","age":30}`)
name := gcjson.Any(jsonData, "name") // 动态类型
age, _ := gcjson.AnyAs[int64](jsonData, "age") // 泛型类型安全
泛型快速访问(零分配版本):
name, _ := gcjson.AnyAsFast[string](jsonData, "name")
自动下钻:
sample := []byte(`{"data":{"id":123}}`)
gcjson.SetDefaultDrillKeys("data")
id := gcjson.AnyData(sample, "id") // 等价于 gcjson.Any(sample, "data.id")
数组遍历:
gcjson.EachArray(jsonData, "tags", func(i int, r gjson.Result) bool {
fmt.Println(i, r.String())
return true
})
Index ¶
- func Any(v any, path string) any
- func AnyAs[T any](v any, path string) (T, bool)
- func AnyAsFast[T any](v any, path string) (T, bool)
- func AnyData(v any, path string) any
- func AnyDataAs[T any](v any, path string) (T, bool)
- func AnyDataAsFast[T any](v any, path string) (T, bool)
- func AnyDataWithKeys(v any, keys []string, path string) any
- func AnyMany(v any, paths ...string) ([]any, error)
- func AnyOr(v any, path string, def any) any
- func AnyOrAs[T any](v any, path string, def T) T
- func AnyOrAsFast[T any](v any, path string, def T) T
- func ArrayAny(v any, path string) []any
- func EachArray(v any, path string, fn func(i int, r gjson.Result) bool) bool
- func EachArrayZero(v any, path string, fn func(i int, r gjson.Result) bool) bool
- func EachObject(v any, path string, fn func(k string, r gjson.Result) bool) bool
- func EachObjectBytes(v any, path string, fn func(keyBytes []byte, val gjson.Result) bool) bool
- func ForEachArrayResult(v any, path string, fn func(idx int, r gjson.Result) bool) bool
- func ForEachDataArrayResult(v any, path string, fn func(idx int, r gjson.Result) bool) bool
- func ForEachObjectResult(v any, path string, fn func(key string, r gjson.Result) bool) bool
- func GetAny(v any, path string) (gjson.Result, error)
- func GetData(v any, path string) (gjson.Result, error)
- func GetDataWithKeys(v any, keys []string, path string) (gjson.Result, error)
- func MapAny(v any, path string) map[string]any
- func Raw(v any, path string) (string, bool)
- func RawBytes(v any, path string) ([]byte, bool)
- func RawMany(v any, paths ...string) ([]string, error)
- func RawManyBytes(v any, paths ...string) ([][]byte, error)
- func SetDefaultDrillKeys(keys ...string)
- func TypeOfAny(v any, path string) string
- type Result
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AnyOrAsFast ¶
func EachArrayZero ¶
func EachObject ¶
EachObject 迭代器 API
func EachObjectBytes ¶
func ForEachArrayResult ¶
func ForEachDataArrayResult ¶
func ForEachObjectResult ¶
func GetDataWithKeys ¶
Types ¶
Click to show internal directories.
Click to hide internal directories.