JSON 处理器编辑

将 JSON 字符串转换为结构化的 JSON 对象。

表 29. Json 选项

名称 必需 默认值 描述

field

-

要解析的字段。

target_field

field

将转换后的结构化对象写入的字段。此字段中的任何现有内容都将被覆盖。

add_to_root

false

强制将解析后的 JSON 添加到文档顶层的标志。选择此选项时,target_field 必须未设置。

add_to_root_conflict_strategy

replace

设置为 replace 时,与解析后的 JSON 中的字段冲突的根字段将被覆盖。设置为 merge 时,冲突的字段将被合并。仅当 add_to_root 设置为 true 时适用。

allow_duplicate_keys

false

设置为 true 时,如果 JSON 包含重复键,JSON 解析器不会失败。相反,任何重复键的最后遇到的值将获胜。

strict_json_parsing

true

设置为 true 时,JSON 解析器将严格解析字段值。设置为 false 时,JSON 解析器将更加宽松,但也更有可能丢弃字段值的一部分。例如,如果 strict_json_parsing 设置为 true 并且字段值为 123 "foo",则处理器将抛出 IllegalArgumentException。但如果 strict_json_parsing 设置为 false,则字段值将被解析为 123

description

-

处理器的描述。用于描述处理器的目的或其配置。

if

-

有条件地执行处理器。请参阅 有条件地运行处理器

ignore_failure

false

忽略处理器的故障。请参阅 处理管道故障

on_failure

-

处理处理器的故障。请参阅 处理管道故障

tag

-

处理器的标识符。有助于调试和指标。

所有 JSON 支持的类型都将被解析(null、布尔值、数字、数组、对象、字符串)。

假设您提供了 json 处理器的以下配置

{
  "json" : {
    "field" : "string_source",
    "target_field" : "json_target"
  }
}

如果处理以下文档

{
  "string_source": "{\"foo\": 2000}"
}

json 处理器对其进行操作后,它将看起来像

{
  "string_source": "{\"foo\": 2000}",
  "json_target": {
    "foo": 2000
  }
}

如果提供以下配置,省略可选的 target_field 设置

{
  "json" : {
    "field" : "source_and_target"
  }
}

那么在 json 处理器对该文档进行操作后

{
  "source_and_target": "{\"foo\": 2000}"
}

它将看起来像

{
  "source_and_target": {
    "foo": 2000
  }
}

这说明,除非在处理器配置中明确命名,否则 target_field 与必需的 field 配置中提供的字段相同。