Skip to content

JSON 处理库

github.com/cybergodev/json 是一个高性能、线程安全的 Go JSON 处理库。它提供了丰富的 JSON 操作功能,包括解析、查询、修改、验证和格式化,同时保持与标准库 encoding/json 的 100% 兼容性。

核心特性

  • 100% encoding/json 兼容 — 无缝替换标准库,无需修改现有代码
  • 线程安全 — 所有操作并发安全,支持高并发场景
  • 路径查询 — 支持 JSONPath 风格的路径表达式,包括通配符、切片
  • 类型安全获取 — 泛型 API (GetTyped[T]) 和类型断言方法 (SafeGet)
  • 流式处理 — 支持大文件和 JSONL/NDJSON 格式流式处理
  • 安全防护 — 内置输入验证、深度限制、危险模式检测
  • 高性能缓存 — 智能缓存、预解析优化、对象池复用
  • 可扩展 — 钩子系统、自定义编码器、验证器

安装

bash
go get github.com/cybergodev/json

30 秒快速体验

go
package main

import (
    "fmt"
    "github.com/cybergodev/json"
)

func main() {
    data := `{"name": "CyberGo", "version": 1, "tags": ["json", "go"]}`

    // 1. 路径获取
    name := json.GetString(data, "name")
    fmt.Println("Name:", name)

    // 2. 修改值
    updated, _ := json.Set(data, "version", 2)
    fmt.Println("Updated:", updated)

    // 3. 验证
    if json.Valid([]byte(data)) {
        fmt.Println("Valid JSON")
    }

    // 4. 带默认值获取
    desc := json.GetString(data, "description", "默认描述")
    fmt.Println("Description:", desc)

    // 5. 解码到结构体
    type Config struct {
        Name    string   `json:"name"`
        Version int      `json:"version"`
        Tags    []string `json:"tags"`
    }
    var config Config
    json.Unmarshal([]byte(data), &config)
    fmt.Printf("Config: %+v\n", config)
}

功能概览

路径操作

功能函数说明
获取值Get, GetString, GetInt...支持嵌套路径、数组索引
带默认值获取GetString, GetInt传入 defaultValue 参数
设置值Set默认自动创建不存在的路径(Config.CreatePaths)
删除值Delete删除指定路径

编解码

功能函数说明
编码Marshal, MarshalIndent100% 兼容 encoding/json
解码Unmarshal, Parse, ParseAny支持泛型和类型安全
格式化Prettify, CompactJSON 美化/压缩

高级功能

功能函数/类型说明
泛型 APIGetTyped[T]类型安全的泛型获取
预解析Processor.PreParse, Processor.GetFromParsed一次解析多次查询
安全获取SafeGetAccessResult链式类型转换
流式处理Processor.ForeachFile大文件内存友好
JSONL 处理StreamLinesInto[T]日志/数据管道
Schema 验证ValidateSchemaJSON Schema 验证

模块导航

模块说明
快速开始安装、基本用法、核心概念
路径表达式语法路径查询、切片、通配符、字段提取
API 文档完整 API 参考
大文件处理流式处理、分块读写、内存优化
使用示例实战代码示例
高级功能示例批量编码、预解析、钩子系统

性能特性

  • 零拷贝解析 — 减少内存分配
  • 智能缓存 — 自动缓存热点路径,支持缓存预热
  • 对象池 — 复用中间对象,降低 GC 压力
  • 并行处理 — 批量操作自动并行化
  • 预解析优化 — 大型 JSON 一次解析多次查询

与标准库对比

特性encoding/jsoncybergodev/json
基本编解码✅ 100% 兼容
路径查询✅ 点号/方括号语法
类型安全获取✅ 泛型 API
流式处理基础✅ 增强
JSONL 支持✅ 原生支持
安全验证✅ 内置防护
钩子系统✅ 可扩展
缓存优化✅ 智能缓存

快速决策指南

场景推荐方案
简单查询GetString(data, "path")
带默认值GetString(data, "path", "default")
类型安全GetTyped[User](data, "user")
高频查询Processor + PreParse
大文件Processor.ForeachFile
不可信输入SecurityConfig()

下一步