Skip to content

Processor ​

Processor 提供高性能、可自定义性、更灵活的复用能力,适合多次操作同一数据源。

特点 ​

  • 高性能:内部缓存机制,重复操作更高效
  • 可配置:支持多种配置选项
  • 链式调用:方法返回修改后的 JSON,支持连续操作
  • 资源管理:显式生命周期控制

创建 Processor ​

New ​

签名:func New(cfg ...Config) (*Processor, error)

创建 Processor 实例。使用可选的 Config 参数配置处理器。

go
// 使用默认配置
processor, err := json.New()
if err != nil {
    panic(err)
}
defer processor.Close()

// 使用自定义配置
cfg := json.DefaultConfig()
cfg.StrictMode = true
processor, err = json.New(cfg)

// 使用安全配置
processor, err = json.New(json.SecurityConfig())

链式调用 ​

Processor 方法返回修改后的 JSON 字符串,支持连续操作:

go
processor, _ := json.New()

// 设置多个值
result1, _ := processor.Set(data, "user.name", "CyberGo")
result2, _ := processor.Set(result1, "user.version", "1.0.0")
finalResult, _ := processor.Delete(result2, "user.temporary")

API 目录 ​

类别说明
查询获取GetString/Int/Float/Bool/Get/GetWithContext/SafeGet/GetArray/GetObject/GetMultiple/CompilePath/GetCompiled/PreParse/GetFromParsed
修改操作Set/SetMultiple/SetCreate/SetMultipleCreate/MergeJSON/MergeMany/CompareJSON
删除操作Delete/DeleteClean
编码输出Encode/EncodePretty/EncodeWithConfig(已废弃)/MarshalIndent/Prettify/Compact/CompactString/CompactBuffer/Indent/HTMLEscape/EncodeBatch/EncodeFields/EncodeStream/ValidateSchema
解析验证Parse/ParseAny/Valid/ValidBytes/Marshal/Unmarshal
批量操作ProcessBatch/WarmupCache
JSONLStreamJSONL/StreamJSONLParallel/StreamJSONLParallelWithContext/StreamJSONLChunked/StreamJSONLFile/ForeachJSONL/MapJSONL/ReduceJSONL/FilterJSONL/CollectJSONL/FirstJSONL/ParseJSONL/ToJSONL/ToJSONLString
文件操作LoadFromFile/LoadFromReader/SaveToFile/MarshalToFile/SaveToWriter/UnmarshalFromFile/ForeachFile 系列
迭代方法Foreach/ForeachWithPath/ForeachNested/ForeachReturn/ForeachWithError/ForeachNestedWithError/ForeachWithPathAndIterator/ForeachWithPathAndControl/ForeachFile/ForeachFileWithPath/ForeachFileChunked/ForeachFileNested
生命周期Close/IsClosed/GetConfig/AddHook/SetLogger/ClearCache/WarmupCache/GetStats/GetHealthStatus/SetGlobalProcessor/ShutdownGlobalProcessor

全局处理器管理 ​

包级函数使用内部全局处理器。可以通过以下函数管理:

SetGlobalProcessor ​

签名:func SetGlobalProcessor(processor *Processor)

设置自定义全局处理器。所有包级函数(Get、Set、Marshal 等)将使用此处理器。

参数

名称类型说明
processor*Processor自定义处理器实例
go
package main

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

func main() {
	// 创建自定义配置的处理器
	cfg := json.SecurityConfig()
	processor, err := json.New(cfg)
	if err != nil {
		panic(err)
	}

	// 设置为全局处理器
	json.SetGlobalProcessor(processor)

	// 现在所有包级函数使用安全配置
	data, err := json.Get(`{"name":"Alice"}`, "name")
	// 使用了 SecurityConfig 的限制
	_ = data
}

注意

  • 传入 nil 不会执行任何操作
  • 前一个全局处理器会自动关闭
  • 此函数是线程安全的

ShutdownGlobalProcessor ​

签名:func ShutdownGlobalProcessor()

关闭并移除全局处理器。后续包级操作将创建新的默认处理器。

go
package main

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

func main() {
	// 使用全局处理器
	data, _ := json.Get(`{"key":"value"}`, "key")
	_ = data

	// 应用关闭时清理
	json.ShutdownGlobalProcessor()

	// 后续操作会创建新的默认处理器
	data2, _ := json.Get(`{"key":"value2"}`, "key")
	_ = data2
}

使用场景

  • 长时间运行的服务在关闭时清理资源
  • 需要重置处理器配置时
  • 测试环境中隔离不同测试用例

相关 ​