You need to enable JavaScript to run this app.
导航

JSON 解析插件

最近更新时间2023.11.13 16:31:32

首次发布时间2022.10.14 11:41:16

您可以使用 json 插件展开 JSON 结构,解析日志字段。本文介绍 json 插件的参数说明和配置示例。

说明

  • JSON 结构字段所在的整条日志中,key 不可重复。
  • LogCollector V1.0.12 及后续版本支持该插件。如何查看 LogCollector 版本,请参考查看软件版本

参数说明

名称

类型

是否必选

解释

field

String

待 LogCollector 插件处理的字段名称。

when

Object

插件的执行条件,仅当执行条件判断为 true 时,才执行此插件。详细说明请参考插件执行条件

trim_keys.mode

string

trim_keys 用于指定是否删除 key 两端的字符串,其中 mode 参数指定删除方式。

  • none:不删除任何字符串。
  • all:(默认)删除 key 两端的字符串。
  • left:删除 key 开头的字符串。
  • right:删除 key 结尾的字符串。

trim_keys.chars

string

trim_keys 用于指定是否删除 key 两端的字符串,其中 chars 参数指定删除的字符范围。 默认为双引号(")。

trim_values.mode

String

trim_values 用于指定是否删除 value 两端的字符串,其中 mode 参数指定删除方式。

  • none:不删除任何字符串。
  • all:(默认)删除 value 两端的字符串。
  • left:删除 value 开头的字符串。
  • right:删除 value 结尾的字符串。

trim_values.chars

String

trim_values 用于指定是否删除 value 两端的字符串,其中 chars 参数指定删除的字符范围。 默认为双引号(")。

allow_empty_values

boolean

如果field指定字段的字段值(value)经解析后,某个子字段值为空,是否保留此键值对。

  • true:保留 value 为空值的键值对。
  • false:(默认)不保留 value 为空值的键值对。

allow_overwrite_keys

boolean

如果 keys 中指定的 key 与采集配置中已存在的 key 重复时,是否覆盖已存在 key 对应的字段。

  • true:覆盖
  • false:(默认)key 重复时,LogCollector 插件配置执行失败。

配置示例

  • 原始日志

    "json_key": "{\"data\":\"Click Here\",\"size\":36,\"style\":\"bold\",\"name\":\"text1\",\"hOffset\":250,\"vOffset\":100,\"alignment\":\"#center#\",\"#onMouseUp#\":\"sun1.opacity = (sun1.opacity / 100) * 90;\"}"
    
  • LogCollector 插件处理配置

    {
        "processors":[
            {
                "json":{
                    "field":"json_key",
                    "trim_keys":{
                        "mode":"all",
                        "chars":"#"
                    },
                    "trim_values":{
                        "mode":"all",
                        "chars":"#"
                    },
                    "allow_overwrite_keys":true,
                    "allow_empty_values":true
                }
            }
        ]
    }
    
  • 处理结果

    "data": "Click Here"
    "size": "36"
    "style": "bold"
    "name": "text1"
    "hOffset": "250"
    "vOffset": "100"
    "alignment": "center"
    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"