Skip to content

Commit

Permalink
Add Parse JSON processor doc. (#3237) (#3703)
Browse files Browse the repository at this point in the history
* Add Parse JSON processor doc.



* Minor edit.



* Formatted some information as a table instead of a list.



* Minor edits.



* Removed smaller Parse JSON file.



* Minor updates.



* Minor edits to table.



* Minor updates.



* Minor update based on tech feedback.



* Minor updates.



* Modified 'indices' to 'indexes'



* Minor edits.



* Minor edits.



* Minor edits.



* Minor edits.



* Minor edits.



* Modified title.



* Content edits from doc and editorial reviews.



* Minor edit.



* Updates.



* Final review comments incorporated.



---------


(cherry picked from commit a246c60)

Signed-off-by: carolxob <[email protected]>
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
1 parent 9c48ae6 commit a60aafd
Showing 1 changed file with 65 additions and 13 deletions.
78 changes: 65 additions & 13 deletions _data-prepper/pipelines/configuration/processors/parse-json.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,79 @@
---
layout: default
title: Parse JSON
title: parse_json
parent: Processors
grand_parent: Pipelines
nav_order: 45
---

# Parse JSON
# parse_json

## Overview
The `parse_json` processor parses JSON data for an event, including any nested fields. The processor extracts the JSON pointer data and adds the input event to the extracted fields.

The `parse_json` processor parses JSON data for an event, including any nested fields. The following table describes several optional parameters you can configure in the `parse_json` processor.

Option | Required | Type | Description
:--- | :--- | :--- | :---
source | No | String | The field in the `Event` that will be parsed. Default value is `message`.
destination | No | String | The destination field of the parsed JSON. Defaults to the root of the `Event`. Cannot be `""`, `/`, or any whitespace-only `String` because these are not valid `Event` fields.
pointer | No | String | A JSON Pointer to the field to be parsed. There is no `pointer` by default, meaning the entire `source` is parsed. The `pointer` can access JSON Array indices as well. If the JSON Pointer is invalid then the entire `source` data is parsed into the outgoing `Event`. If the pointed-to key already exists in the `Event` and the `destination` is the root, then the pointer uses the entire path of the key.
## Configuration

<!---## Configuration
You can configure the `parse_json` processor with the following options.

Content will be added to this section.
| Option | Required | Type | Description |
| :--- | :--- | :--- | :--- |
| `source` | No | String | The field in the `event` that will be parsed. Default value is `message`. |
| `destination` | No | String | The destination field of the parsed JSON. Defaults to the root of the `event`. Cannot be `""`, `/`, or any whitespace-only `string` because these are not valid `event` fields. |
| `pointer` | No | String | A JSON pointer to the field to be parsed. There is no `pointer` by default, meaning the entire `source` is parsed. The `pointer` can access JSON array indexes as well. If the JSON pointer is invalid then the entire `source` data is parsed into the outgoing `event`. If the key that is pointed to already exists in the `event` and the `destination` is the root, then the pointer uses the entire path of the key. |

## Metrics
## Usage

Content will be added to this section.--->
To get started, create the following `pipeline.yaml` file:

```yaml
parse-json-pipeline:
source:
stdin:
processor:
- parse_json:
sink:
- stdout:
```
### Basic example
To test the `parse_json` processor with the previous configuration, run the pipeline and paste the following line into your console, then enter `exit` on a new line:

```
{"outer_key": {"inner_key": "inner_value"}}
```
{% include copy.html %}
The `parse_json` processor parses the message into the following format:
```
{"message": {"outer_key": {"inner_key": "inner_value"}}", "outer_key":{"inner_key":"inner_value"}}}
```
### Example with a JSON pointer
You can use a JSON pointer to parse a selection of the JSON data by specifying the `pointer` option in the configuration. To get started, create the following `pipeline.yaml` file:
```yaml
parse-json-pipeline:
source:
stdin:
processor:
- parse_json:
pointer: "outer_key/inner_key"
sink:
- stdout:
```

To test the `parse_json` processor with the pointer option, run the pipeline, paste the following line into your console, and then enter `exit` on a new line:

```
{"outer_key": {"inner_key": "inner_value"}}
```
{% include copy.html %}

The processor parses the message into the following format:

```
{"message": {"outer_key": {"inner_key": "inner_value"}}", "inner_key": "inner_value"}
```

0 comments on commit a60aafd

Please sign in to comment.