Link Search Menu Expand Document Documentation Menu

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"
}
剩余 350 字符

有问题?

想要贡献?