jsonstream
| 函数名 | 函数描述/介绍 |
|---|---|
| jsonstream.Extract | Extract 以流式方式解析一段 JSON 内容(字符串或字节),并通过回调选项处理解析结果。 它边解析边触发回调,并能容错处理非标准 JSON。 |
| jsonstream.ExtractFromReader | ExtractFromReader 从数据流(io.Reader)中以流式方式解析 JSON 内容,适合处理大文件、网络流或边生产边消费的场景。 |
| jsonstream.onArray | onArray 注册数组回调,当一个完整的 JSON 数组解析完成时触发,回调参数为该数组(list)。 |
| jsonstream.onConditionalObject | onConditionalObject 注册条件对象回调,只有当对象同时包含 keys 中列出的所有键时才触发。 |
| jsonstream.onError | onError 注册解析错误回调,当解析过程中发生错误时触发,回调参数为错误对象。 |
| jsonstream.onField | onField 为指定字段注册字符级流式处理器,解析过程中字段值逐字符写入 reader,无需等待字段完整。 回调参数为字段名、数据流 reader(可用 io.ReadAll 消费)以及父路径。该回调在独立 goroutine 中执行。 |
| jsonstream.onFieldGlob | onFieldGlob 使用 Glob 通配符匹配字段名,为匹配的字段注册字符级流式处理器。 |
| jsonstream.onFieldRegexp | onFieldRegexp 使用正则表达式匹配字段名,为匹配的字段注册字符级流式处理器。 |
| jsonstream.onFields | onFields 为多个字段注册统一的字符级流式处理器,任意一个字段名匹配即触发(包含匹配,大小写不敏感)。 |
| jsonstream.onFinished | onFinished 注册解析完成回调,当数据流被完整解析且没有错误时触发。 |
| jsonstream.onKeyValue | onKeyValue 注册键值对回调,解析对象时每遇到一个键值对就触发,回调参数为键名与对应值。 |
| jsonstream.onKeyValueEx | onKeyValueEx 注册带父路径的键值对回调,回调参数为键、值以及该键所在的嵌套父路径(list)。 |
| jsonstream.onObject | onObject 注册对象回调,当一个完整的 JSON 对象解析完成时触发,回调参数为该对象(map)。 |
| jsonstream.onRawKeyValue | onRawKeyValue 注册原始键值对回调,回调参数为未经处理的原始键与原始值。 |
| jsonstream.onRootMap | onRootMap 注册根对象回调,仅当顶层 JSON 对象解析完成时触发。 |
函数定义#
Extract#
详细描述#
Extract 以流式方式解析一段 JSON 内容(字符串或字节),并通过回调选项处理解析结果。
它边解析边触发回调,并能容错处理非标准 JSON。
Example:
jsonstream.Extract(`{"name": "Alice", "age": 30}`,
jsonstream.onObject(func(data) { println("object:", data["name"]) }),
)定义#
Extract(input any, opts ...jsonextractor.CallbackOption) error
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| input | any | |
| opts | ...jsonextractor.CallbackOption |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | error |
ExtractFromReader#
详细描述#
ExtractFromReader 从数据流(io.Reader)中以流式方式解析 JSON 内容,适合处理大文件、网络流或边生产边消费的场景。
Example:
r, w = io.Pipe()
go func() { w.WriteString(`{"name": "Alice"}`) w.Close() }()
jsonstream.ExtractFromReader(r, jsonstream.onObject(func(data) {
println("object:", data["name"])
}))定义#
ExtractFromReader(reader io.Reader, opts ...jsonextractor.CallbackOption) error
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| reader | io.Reader | |
| opts | ...jsonextractor.CallbackOption |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | error |
onArray#
详细描述#
onArray 注册数组回调,当一个完整的 JSON 数组解析完成时触发,回调参数为该数组(list)。
Example:
jsonstream.Extract(`[1, 2, 3]`, jsonstream.onArray(func(data) {
println(len(data))
}))定义#
onArray(callback func(data []any)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| callback | func(data []any) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onConditionalObject#
详细描述#
onConditionalObject 注册条件对象回调,只有当对象同时包含 keys 中列出的所有键时才触发。
Example:
jsonstream.Extract(`{"name": "Alice", "email": "a@b.com"}`, jsonstream.onConditionalObject(["name", "email"], func(data) { println("user:", data["name"], data["email"]) }), )
定义#
onConditionalObject(keys []string, callback func(data map[string]any)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| keys | []string | |
| callback | func(data map[string]any) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onError#
详细描述#
onError 注册解析错误回调,当解析过程中发生错误时触发,回调参数为错误对象。
Example:
jsonstream.ExtractFromReader(reader, jsonstream.onError(func(err) {
log.Errorf("stream error: %v", err)
}))定义#
onError(callback func(err error)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| callback | func(err error) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onField#
详细描述#
onField 为指定字段注册字符级流式处理器,解析过程中字段值逐字符写入 reader,无需等待字段完整。
回调参数为字段名、数据流 reader(可用 io.ReadAll 消费)以及父路径。该回调在独立 goroutine 中执行。
Example:
jsonstream.Extract(`{"content": "very long text..."}`, jsonstream.onField("content", func(key, reader, parents) { data = io.ReadAll(reader)~ println(key, "size:", len(data)) }), )
定义#
onField(fieldName string, handler func(key string, reader io.Reader, parents []string)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| fieldName | string | |
| handler | func(key string, reader io.Reader, parents []string) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onFieldGlob#
详细描述#
onFieldGlob 使用 Glob 通配符匹配字段名,为匹配的字段注册字符级流式处理器。
Example:
jsonstream.Extract(`{"config_host": "localhost", "config_port": 8080}`, jsonstream.onFieldGlob("config_*", func(key, reader, parents) { data = io.ReadAll(reader)~ println(key, string(data)) }), )
定义#
onFieldGlob(pattern string, handler func(key string, reader io.Reader, parents []string)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| pattern | string | |
| handler | func(key string, reader io.Reader, parents []string) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onFieldRegexp#
详细描述#
onFieldRegexp 使用正则表达式匹配字段名,为匹配的字段注册字符级流式处理器。
Example:
jsonstream.Extract(`{"user_name": "alice", "user_age": 25}`, jsonstream.onFieldRegexp("^user_.*", func(key, reader, parents) { data = io.ReadAll(reader)~ println(key, string(data)) }), )
定义#
onFieldRegexp(pattern string, handler func(key string, reader io.Reader, parents []string)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| pattern | string | |
| handler | func(key string, reader io.Reader, parents []string) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onFields#
详细描述#
onFields 为多个字段注册统一的字符级流式处理器,任意一个字段名匹配即触发(包含匹配,大小写不敏感)。
Example:
jsonstream.Extract(`{"data1": "aaa", "data2": "bbb"}`, jsonstream.onFields(["data1", "data2"], func(key, reader, parents) { data = io.ReadAll(reader)~ println(key, string(data)) }), )
定义#
onFields(fieldNames []string, handler func(key string, reader io.Reader, parents []string)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| fieldNames | []string | |
| handler | func(key string, reader io.Reader, parents []string) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onFinished#
详细描述#
onFinished 注册解析完成回调,当数据流被完整解析且没有错误时触发。
Example:
jsonstream.Extract(`{"a": 1}`, jsonstream.onFinished(func() {
println("stream finished")
}))定义#
onFinished(callback func()) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| callback | func() |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onKeyValue#
详细描述#
onKeyValue 注册键值对回调,解析对象时每遇到一个键值对就触发,回调参数为键名与对应值。
Example:
jsonstream.Extract(`{"name": "Alice", "age": 30}`, jsonstream.onKeyValue(func(key, value) {
println(key, "=", value)
}))定义#
onKeyValue(callback func(key string, data any)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| callback | func(key string, data any) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onKeyValueEx#
详细描述#
onKeyValueEx 注册带父路径的键值对回调,回调参数为键、值以及该键所在的嵌套父路径(list)。
Example:
jsonstream.Extract(`{"user": {"name": "Alice"}}`, jsonstream.onKeyValueEx(func(key, value, parents) { println(key, "=", value, "parents:", parents) }))
定义#
onKeyValueEx(callback func(key, data any, parents []string)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| callback | func(key, data any, parents []string) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onObject#
详细描述#
onObject 注册对象回调,当一个完整的 JSON 对象解析完成时触发,回调参数为该对象(map)。
Example:
jsonstream.Extract(`{"name": "Alice", "age": 30}`, jsonstream.onObject(func(data) {
println(data["name"])
}))定义#
onObject(callback func(data map[string]any)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| callback | func(data map[string]any) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onRawKeyValue#
详细描述#
onRawKeyValue 注册原始键值对回调,回调参数为未经处理的原始键与原始值。
Example:
jsonstream.Extract(`{"name": "Alice"}`, jsonstream.onRawKeyValue(func(key, value) {
println(key, value)
}))定义#
onRawKeyValue(callback func(key, data any)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| callback | func(key, data any) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |
onRootMap#
详细描述#
onRootMap 注册根对象回调,仅当顶层 JSON 对象解析完成时触发。
Example:
jsonstream.Extract(`{"name": "Alice"}`, jsonstream.onRootMap(func(data) {
println(data["name"])
}))定义#
onRootMap(callback func(data map[string]any)) jsonextractor.CallbackOption
参数#
| 参数名 | 参数类型 | 参数解释 |
|---|---|---|
| callback | func(data map[string]any) |
返回值#
| 返回值(顺序) | 返回值类型 | 返回值解释 |
|---|---|---|
| r1 | jsonextractor.CallbackOption |