> For the complete documentation index, see [llms.txt](https://ilogtail.gitbook.io/ilogtail-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ilogtail.gitbook.io/ilogtail-docs/pre-release/plugins/chu-li-cha-jian/kuo-zhan-chu-li-cha-jian/processor-json.md).

# Json

## 简介

`processor_json processor`插件可以实现对`Json`格式日志的解析。

备注：当作为第一个日志解析插件且追求原生性能时，可改用原生插件 [JSON 解析](/ilogtail-docs/pre-release/plugins/chu-li-cha-jian/yuan-sheng-chu-li-cha-jian/processor-parse-json-native.md)。

## 事件能力

列含义见 [概览 · 事件能力列说明](https://ilogtail.gitbook.io/ilogtail-docs/pre-release/plugins/chu-li-cha-jian/kuo-zhan-chu-li-cha-jian/pages/V3l051tHPlzCBkmzOfvu#事件能力列说明)。

| v1 接口 | v2 接口 | Log    | Metric | Span |
| ----- | ----- | ------ | ------ | ---- |
| ✓     | ✓     | v1\&v2 | 透传未知   | 透传未知 |

| LogGroup(v1) | EventTypeLogging | EventTypeMetric | EventTypeSpan |
| ------------ | ---------------- | --------------- | ------------- |
| ✅            | ✅                | ❌               | ❌             |

## 版本

[Stable](/ilogtail-docs/pre-release/plugins/stability-level.md)

## 版本说明

* 推荐版本：iLogtail v1.8.0 及以上

## 配置参数

| 参数                     | 类型     | 是否必选 | 说明                                                |
| ---------------------- | ------ | ---- | ------------------------------------------------- |
| Type                   | string | 是    | 插件类型                                              |
| SourceKey              | string | 是    | 原始字段名                                             |
| NoKeyError             | bool   | 否    | 无匹配字段时是否报错。如果未添加该参数，则默认使用true，表示报错。               |
| ExpandDepth            | int    | 否    | JSON展开的深度。如果未添加该参数，则默认为0，表示不限制。1表示当前层级，以此类推。      |
| ExpandConnector        | string | 否    | JSON展开时的连接符，可以为空。如果未添加该参数，则默认使用下划线（\_）。           |
| Prefix                 | string | 否    | JSON展开时对字段附加的前缀。如果未添加该参数，则默认为空。                   |
| KeepSource             | bool   | 否    | 是否保留原始字段。如果未添加该参数，则默认使用true，表示保留。                 |
| UseSourceKeyAsPrefix   | bool   | 否    | 是否将原始字段名作为所有JSON展开字段名的前缀。如果未添加该参数，则默认使用false，表示否。 |
| KeepSourceIfParseError | bool   | 否    | 解析失败时，是否保留原始日志。如果未添加该参数，则默认使用true，表示保留原始日志。       |
| IgnoreFirstConnector   | bool   | 否    | 是否忽略第一个连接符。如果未添加该参数，则默认使用false，表示忽略第一个连接符。        |
| ExpandArray            | bool   | 否    | 是否展开JSON数组。如果未添加该参数，则默认使用false，表示不展开数组。           |

## 样例

采集`/home/test-log/`路径下的`json.log`文件，并按照`Json`格式进行日志解析。

* 输入

```bash
echo '{"key1": 123456, "key2": "abcd"}' >> /home/test-log/json.log
```

* 采集配置

```yaml
enable: true
inputs:
  - Type: input_file
    FilePaths: 
      - /home/test-log/*.log
processors:
  - Type: processor_json
    SourceKey: content
    KeepSource: false
    ExpandDepth: 1
    ExpandConnector: ""
flushers:
  - Type: flusher_stdout
    OnlyStdout: true
```

* 输出

```json
{
    "__tag__:__path__": "/home/test-dir/test_log/json.log",
    "key1": "123456",
    "key2": "abcd",
    "__time__": "1657354602"
}
```
