parse_json
The parse_json
处理器解析事件中 JSON 格式的字符串,包括嵌套字段。它可以选择使用 JSON 指针来提取源 JSON 的特定部分,并将提取的数据添加到事件中。
配置
您可以使用以下选项配置 parse_json
处理器。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
source | 否 | 字符串 | 事件中将被解析的字段。默认值为 message 。 |
destination | 否 | 字符串 | 解析后的 JSON 的目标字段。默认是事件的根。不能是 "" 、/ 或任何只包含空白字符的字符串。 |
指针 | 否 | 字符串 | 一个 JSON 指针(由 RFC 6901 定义),指向源 JSON 中的特定字段。如果省略,将解析整个 source 。如果指针无效,则会转而解析完整的 source 。当写入到根目标时,现有键将保留,除非被覆盖。 |
解析条件 | 否 | 字符串 | 一个条件表达式,用于确定何时解析该字段。接受符合 表达式语法 的字符串。 |
overwrite_if_destination_exists | 否 | 布尔型 | 如果目标字段已存在,是否覆盖它。默认值为 true 。 |
删除源 | 否 | 布尔型 | 解析后是否删除源字段。默认值为 false 。 |
tags_on_failure | 否 | 字符串 | 如果解析失败或发生意外异常时要应用的标签列表。 |
handle_failed_events | 否 | 字符串 | 确定如何处理包含 JSON 处理错误的事件。有效值包括 skip (记录错误并将事件发送到下游的下一个处理器)和 skip_silently (不记录错误,直接将事件发送到下游的下一个处理器)。 |
用法
要使用 parse_json
处理器,请将其添加到您的 pipeline.yaml
配置文件中
parse-json-pipeline:
source:
...
...
processor:
- parse_json:
所有示例都使用以下 JSON 消息作为事件输出
{"outer_key": {"inner_key": "inner_value"}}
基本示例
以下示例解析 JSON 消息字段并将数据扁平化到事件中。示例事件中的原始 message
字段保留,解析后的内容被添加到根级别,如以下输出所示
{
"message": "{\"outer_key\": {\"inner_key\": \"inner_value\"}}",
"outer_key": {
"inner_key": "inner_value"
}
}
删除源
如果您想从原始 JSON 消息中删除原始字段,请使用 delete_source
选项,如以下示例管道所示
parse-json-pipeline:
source:
...
...
processor:
- parse_json:
delete_source: true
在以下事件中,message
字段被解析并删除,只留下结构化输出
{
"outer_key": {
"inner_key": "inner_value"
}
}
使用 JSON 指针的示例
您可以使用 pointer
选项从 JSON 数据中提取特定的嵌套字段,如以下示例管道所示
parse-json-pipeline:
source:
...
...
processor:
- parse_json:
pointer: "/outer_key/inner_key"
只有指针路径 /outer_key/inner_key
处的值被提取并添加到事件中。如果您设置了 destination
,则提取的值将被添加到该字段。
{
"message": "{\"outer_key\": {\"inner_key\": \"inner_value\"}}",
"inner_key": "inner_value"
}