Skip to main content

jsonstream

函数名函数描述/介绍
jsonstream.ExtractExtract 以流式方式解析一段 JSON 内容(字符串或字节),并通过回调选项处理解析结果。 它边解析边触发回调,并能容错处理非标准 JSON。
jsonstream.ExtractFromReaderExtractFromReader 从数据流(io.Reader)中以流式方式解析 JSON 内容,适合处理大文件、网络流或边生产边消费的场景。
jsonstream.onArrayonArray 注册数组回调,当一个完整的 JSON 数组解析完成时触发,回调参数为该数组(list)。
jsonstream.onConditionalObjectonConditionalObject 注册条件对象回调,只有当对象同时包含 keys 中列出的所有键时才触发。
jsonstream.onErroronError 注册解析错误回调,当解析过程中发生错误时触发,回调参数为错误对象。
jsonstream.onFieldonField 为指定字段注册字符级流式处理器,解析过程中字段值逐字符写入 reader,无需等待字段完整。 回调参数为字段名、数据流 reader(可用 io.ReadAll 消费)以及父路径。该回调在独立 goroutine 中执行。
jsonstream.onFieldGlobonFieldGlob 使用 Glob 通配符匹配字段名,为匹配的字段注册字符级流式处理器。
jsonstream.onFieldRegexponFieldRegexp 使用正则表达式匹配字段名,为匹配的字段注册字符级流式处理器。
jsonstream.onFieldsonFields 为多个字段注册统一的字符级流式处理器,任意一个字段名匹配即触发(包含匹配,大小写不敏感)。
jsonstream.onFinishedonFinished 注册解析完成回调,当数据流被完整解析且没有错误时触发。
jsonstream.onKeyValueonKeyValue 注册键值对回调,解析对象时每遇到一个键值对就触发,回调参数为键名与对应值。
jsonstream.onKeyValueExonKeyValueEx 注册带父路径的键值对回调,回调参数为键、值以及该键所在的嵌套父路径(list)。
jsonstream.onObjectonObject 注册对象回调,当一个完整的 JSON 对象解析完成时触发,回调参数为该对象(map)。
jsonstream.onRawKeyValueonRawKeyValue 注册原始键值对回调,回调参数为未经处理的原始键与原始值。
jsonstream.onRootMaponRootMap 注册根对象回调,仅当顶层 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

参数#

参数名参数类型参数解释
inputany
opts...jsonextractor.CallbackOption

返回值#

返回值(顺序)返回值类型返回值解释
r1error

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

参数#

参数名参数类型参数解释
readerio.Reader
opts...jsonextractor.CallbackOption

返回值#

返回值(顺序)返回值类型返回值解释
r1error

onArray#

详细描述#

onArray 注册数组回调,当一个完整的 JSON 数组解析完成时触发,回调参数为该数组(list)。

Example:

jsonstream.Extract(`[1, 2, 3]`, jsonstream.onArray(func(data) {
    println(len(data))
}))

定义#

onArray(callback func(data []any)) jsonextractor.CallbackOption

参数#

参数名参数类型参数解释
callbackfunc(data []any)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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
callbackfunc(data map[string]any)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.CallbackOption

onError#

详细描述#

onError 注册解析错误回调,当解析过程中发生错误时触发,回调参数为错误对象。

Example:

jsonstream.ExtractFromReader(reader, jsonstream.onError(func(err) {
    log.Errorf("stream error: %v", err)
}))

定义#

onError(callback func(err error)) jsonextractor.CallbackOption

参数#

参数名参数类型参数解释
callbackfunc(err error)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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

参数#

参数名参数类型参数解释
fieldNamestring
handlerfunc(key string, reader io.Reader, parents []string)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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

参数#

参数名参数类型参数解释
patternstring
handlerfunc(key string, reader io.Reader, parents []string)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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

参数#

参数名参数类型参数解释
patternstring
handlerfunc(key string, reader io.Reader, parents []string)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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
handlerfunc(key string, reader io.Reader, parents []string)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.CallbackOption

onFinished#

详细描述#

onFinished 注册解析完成回调,当数据流被完整解析且没有错误时触发。

Example:

jsonstream.Extract(`{"a": 1}`, jsonstream.onFinished(func() {
    println("stream finished")
}))

定义#

onFinished(callback func()) jsonextractor.CallbackOption

参数#

参数名参数类型参数解释
callbackfunc()

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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

参数#

参数名参数类型参数解释
callbackfunc(key string, data any)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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

参数#

参数名参数类型参数解释
callbackfunc(key, data any, parents []string)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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

参数#

参数名参数类型参数解释
callbackfunc(data map[string]any)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.CallbackOption

onRawKeyValue#

详细描述#

onRawKeyValue 注册原始键值对回调,回调参数为未经处理的原始键与原始值。

Example:

jsonstream.Extract(`{"name": "Alice"}`, jsonstream.onRawKeyValue(func(key, value) {
    println(key, value)
}))

定义#

onRawKeyValue(callback func(key, data any)) jsonextractor.CallbackOption

参数#

参数名参数类型参数解释
callbackfunc(key, data any)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.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

参数#

参数名参数类型参数解释
callbackfunc(data map[string]any)

返回值#

返回值(顺序)返回值类型返回值解释
r1jsonextractor.CallbackOption