跳到主要内容

jsonstream

jsonstream 库提供流式 JSON 解析能力,边读边触发回调,适合处理超大 JSON、不完整/边到达的 JSON(如 AI 流式输出),而无需一次性载入全部内容。

典型使用场景:

  • 流式提取:jsonstream.Extract(input, opts...) 解析输入,jsonstream.ExtractFromReader 从 reader 流式解析。
  • 回调订阅:jsonstream.onObject / jsonstream.onArray / jsonstream.onKeyValue 处理对象/数组/键值,jsonstream.onField / jsonstream.onFieldGlob / jsonstream.onFieldRegexp 按字段名/通配/正则定向处理,jsonstream.onError / jsonstream.onFinished 处理错误与完成。

与相邻库的关系:jsonstreamjson(完整解析)互补,专攻流式与大体量场景,常用于解析 ai 的流式响应或大型导出文件。

共 15 个函数

可变参数函数索引

函数参数返回值说明
jsonstream.Extractinput any, opts ...jsonextractor.CallbackOptionerror以流式方式解析一段 JSON 内容(字符串或字节),并通过回调选项处理解析结果。
jsonstream.ExtractFromReaderreader io.Reader, opts ...jsonextractor.CallbackOptionerror从数据流(io.Reader)中以流式方式解析 JSON 内容,适合处理大文件、网络流或边生产边消费的场景。

可变参数函数详情

Extract

Extract(input any, opts ...jsonextractor.CallbackOption) error

以流式方式解析一段 JSON 内容(字符串或字节),并通过回调选项处理解析结果。

它边解析边触发回调,并能容错处理非标准 JSON。

必填参数

参数名类型说明
inputany待解析的 JSON 内容(字符串或字节切片)

可选参数

可作为可变参数 opts ...jsonextractor.CallbackOption 传入选项;共 13 个可用选项,详见 CallbackOption 选项列表

返回值

序号类型说明
r1error解析过程中产生的错误

示例

jsonstream.Extract(`{"name": "Alice", "age": 30}`,

jsonstream.onObject(func(data) {
println("object:", data["name"])
}),

)

ExtractFromReader

ExtractFromReader(reader io.Reader, opts ...jsonextractor.CallbackOption) error

从数据流(io.Reader)中以流式方式解析 JSON 内容,适合处理大文件、网络流或边生产边消费的场景。

必填参数

参数名类型说明
readerio.Reader提供 JSON 内容的数据流

可选参数

可作为可变参数 opts ...jsonextractor.CallbackOption 传入选项;共 13 个可用选项,详见 CallbackOption 选项列表

返回值

序号类型说明
r1error解析过程中产生的错误

示例

r, w = io.Pipe()

go func() {
w.WriteString(`{"name": "Alice"}`)
w.Close()
}()

jsonstream.ExtractFromReader(r, jsonstream.onObject(func(data) {

println("object:", data["name"])

}))

可变参数选项列表

以下按选项类型汇总全部可变参数选项(原先重复在各主函数下的选项表已收拢到此处):

1. 类型:CallbackOption

涉及到的函数有:jsonstream.Extractjsonstream.ExtractFromReader

选项函数参数返回值说明
jsonstream.onArraycallback func(data []any)jsonextractor.CallbackOption注册数组回调,当一个完整的 JSON 数组解析完成时触发,回调参数为该数组(list)。
jsonstream.onConditionalObjectkeys []string, callback func(data map[string]any)jsonextractor.CallbackOption注册条件对象回调,只有当对象同时包含 keys 中列出的所有键时才触发。
jsonstream.onErrorcallback func(err error)jsonextractor.CallbackOption注册解析错误回调,当解析过程中发生错误时触发,回调参数为错误对象。
jsonstream.onFieldfieldName string, handler func(key string, reader io.Reader, parents []string)jsonextractor.CallbackOption为指定字段注册字符级流式处理器,解析过程中字段值逐字符写入 reader,无需等待字段完整。
jsonstream.onFieldGlobpattern string, handler func(key string, reader io.Reader, parents []string)jsonextractor.CallbackOption使用 Glob 通配符匹配字段名,为匹配的字段注册字符级流式处理器。
jsonstream.onFieldRegexppattern string, handler func(key string, reader io.Reader, parents []string)jsonextractor.CallbackOption使用正则表达式匹配字段名,为匹配的字段注册字符级流式处理器。
jsonstream.onFieldsfieldNames []string, handler func(key string, reader io.Reader, parents []string)jsonextractor.CallbackOption为多个字段注册统一的字符级流式处理器,任意一个字段名匹配即触发(包含匹配,大小写不敏感)。
jsonstream.onFinishedcallback func()jsonextractor.CallbackOption注册解析完成回调,当数据流被完整解析且没有错误时触发。
jsonstream.onKeyValuecallback func(key string, data any)jsonextractor.CallbackOption注册键值对回调,解析对象时每遇到一个键值对就触发,回调参数为键名与对应值。
jsonstream.onKeyValueExcallback func(key, data any, parents []string)jsonextractor.CallbackOption注册带父路径的键值对回调,回调参数为键、值以及该键所在的嵌套父路径(list)。
jsonstream.onObjectcallback func(data map[string]any)jsonextractor.CallbackOption注册对象回调,当一个完整的 JSON 对象解析完成时触发,回调参数为该对象(map)。
jsonstream.onRawKeyValuecallback func(key, data any)jsonextractor.CallbackOption注册原始键值对回调,回调参数为未经处理的原始键与原始值。
jsonstream.onRootMapcallback func(data map[string]any)jsonextractor.CallbackOption注册根对象回调,仅当顶层 JSON 对象解析完成时触发。