> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/advanced-blocks/json-parser.md).

# JSONパーサー

JSON文字列（生のJSON、またはMarkdownコードブロックで囲まれたJSON）を、指定したフィールドを抽出して個別の出力として公開することで構造化データに変換します。これにより、JSON解析、LLM/VLM出力処理、構造化データ抽出、設定解析のワークフローで、JSON文字列を利用可能なワークフローデータに変換できます。

## このブロックの仕組み

このブロックはJSON文字列を解析し、指定したフィールドを個別の出力として抽出します。このブロックは次のことを行います。

1. JSON文字列の入力を受け取ります（通常はLLM/VLMブロックまたはワークフロー入力から）
2. JSONコンテンツを検出して抽出します：

   **Markdownで囲まれたJSONを処理します:**

   * Markdownコードブロック内に囲まれたJSONを検索します（`json ...` )
   * この形式はLLM/VLMの応答で非常によく見られます（例：GPTの応答）
   * 複数のMarkdown JSONブロックが見つかった場合は、最初のブロックのみを解析します
   * Markdownタグ内からJSONコンテンツを抽出します

   **生のJSON文字列を処理します:**

   * Markdownブロックが見つからない場合は、文字列全体をJSONとして解析しようとします
   * 標準的なJSON形式の文字列をサポートします
3. JSONコンテンツを解析します：
   * PythonのJSONパーサーを使用して、文字列をJSONオブジェクト/辞書に変換します
   * 解析エラーを適切に処理します（解析に失敗した場合は、すべてのフィールドにNoneを返します）
4. 期待されるフィールドを抽出します：
   * で指定された各フィールドの値を取得します `expected_fields` parameter
   * 期待される各フィールドについて、解析済みJSON内の対応するキーを検索します
   * フィールド値を返します（フィールドがない場合はNone）
5. エラー状態を設定します：
   * `error_status` が設定されます `True` 期待されるフィールドのうち少なくとも1つを解析済みJSONから取得できない場合
   * `error_status` が設定されます `False` すべての期待されるフィールドが見つかった場合（複数のMarkdownブロックが存在しても、最初のもののみが解析されます）
   * エラー状態は常に出力に含まれるため、後続のブロックで解析の成功可否を確認できます
6. フィールドを出力として公開します：
   * の各フィールドは `expected_fields` フィールド名を持つ個別の出力になります
   * フィールド値は解析済みJSONから抽出され、出力として利用可能になります
   * 欠落しているフィールドはNoneに設定されます
   * すべての出力は次の形式で参照できます `$steps.block_name.field_name` 構文
7. 解析済みデータを返します：
   * 出力には以下が含まれます： `error_status` （boolean）およびすべての期待されるフィールド
   * フィールドにはJSONから抽出された値が含まれます（欠落している場合はNone）
   * 出力は後続のワークフローステップで使用できます

このブロックは、JSONを返すLLM/VLMの出力の処理、JSON文字列からの構造化設定の抽出、JSONレスポンスのワークフローで利用可能なデータへの解析に特に役立ちます。LLMがMarkdownコードブロック内にJSONを包む一般的なケースにも対応します。

## 一般的な使用例

* **LLM/VLM出力処理**: 大規模言語モデルおよび視覚言語モデルからのJSON出力を解析します（例：GPTのJSON応答を解析し、LLM出力から構造化データを抽出し、VLMのJSON応答を処理する）。これにより、LLM/VLM出力処理ワークフローが可能になります
* **構造化データ抽出**: ワークフローで使用するためにJSON文字列から構造化データを抽出します（例：設定パラメータを抽出し、JSON応答を解析し、構造化フィールドを抽出する）。これにより、構造化データ抽出ワークフローが可能になります
* **設定解析**: JSON設定文字列をワークフロー・パラメータに変換します（例：モデル設定を解析し、ワークフローパラメータを抽出し、JSON設定を解析する）。これにより、設定解析ワークフローが可能になります
* **JSONレスポンス処理**: APIやモデルからのJSONレスポンスを処理します（例：APIのJSON応答を解析し、JSONからフィールドを抽出し、JSONデータを処理する）。これにより、JSONレスポンス処理ワークフローが可能になります
* **動的パラメータ抽出**: ワークフローのステップで使用するためにJSON文字列から動的パラメータを抽出します（例：JSONからモデルIDを抽出し、動的設定を解析し、パラメータを動的に抽出する）。これにより、動的パラメータワークフローが可能になります
* **データ形式変換**: JSON文字列を構造化されたワークフローデータに変換します（例：JSONをワークフロー入力に変換し、ワークフローで使うためにJSONを解析し、JSONフィールドを抽出する）。これにより、データ形式変換ワークフローが可能になります

## 他のブロックへの接続

このブロックはJSON文字列を受け取り、解析済みのフィールド出力を生成します：

* **LLM/VLMブロックの後** JSON出力を構造化データに解析します（例：LLMのJSON出力を解析し、VLMのJSONフィールドを抽出し、モデルのJSON応答を処理する）。これにより、LLM/VLMからパーサーへのワークフローが可能になります
* **ワークフロー入力の後** JSON入力パラメータを解析します（例：JSON設定入力を解析し、JSONパラメータを抽出し、JSONワークフロー入力を処理する）。これにより、入力からパーサーへのワークフローが可能になります
* **モデルブロックの前** 解析済みフィールドをモデルパラメータとして使用します（例：解析済みのmodel\_idをモデルに使い、解析済みの設定をモデル設定に使い、解析済みパラメータをモデルに渡す）。これにより、パーサーからモデルへのワークフローが可能になります
* **ロジックブロックの前** 条件で解析済みフィールドを使用します（例：Continue Ifで解析済み値を使い、解析済みフィールドに基づいてフィルタリングし、解析済みデータを使って判断する）。これにより、パーサーからロジックへのワークフローが可能になります
* **データ保存ブロックの前** 解析済みフィールド値を保存します（例：解析済みJSONフィールドを保存し、解析済み値を記録し、解析済みデータを保存する）。これにより、パーサーからストレージへのワークフローが可能になります
* **ワークフロー出力において** 解析済みフィールドを最終出力として提供します（例：JSON解析出力、構造化データ出力、解析済みフィールド出力）。これにより、パーサーから出力へのワークフローが可能になります

## 要件

このブロックにはJSON文字列入力（生のJSON、またはMarkdownコードブロックで囲まれたJSON）が必要です。この `expected_fields` パラメータは、どのJSONフィールドを出力として抽出するかを指定します（フィールド名は有効なJSONキーである必要があります）。The `error_status` フィールド名は予約済みであり、使用できません `expected_fields`。このブロックは生のJSON文字列と、Markdownコードブロックで囲まれたJSONの両方をサポートします（`json ...` ）。複数のMarkdownブロックが見つかった場合、最初のものだけが解析されます。解析に失敗した場合、または期待されるフィールドが欠落している場合、フィールドはNoneに設定され、 `error_status` がTrueに設定されます。期待されるすべてのフィールドは個別の出力となり、後続のワークフローステップで参照できます。

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/json_parser@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前**            | **型**       | **説明**                                                                                                                                                                                                                                          | 参照 |
| ----------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`            | `str`       | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                         | ❌  |
| `raw_json`        | `str`       | 解析するJSON文字列。生のJSON文字列（例：'{"key": "value"}'）またはMarkdownコードブロックで囲まれたJSON（例： `json {"key": "value"}` ）。Markdownで囲まれたJSONはLLM/VLMの応答でよく見られます。複数のMarkdown JSONブロックがある場合、最初のブロックのみが解析されます。文字列はPythonのJSONパーサーを使って解析され、指定されたフィールドが出力として抽出されます。         | ✅  |
| `expected_fields` | `List[str]` | 解析済みJSONから抽出するJSONフィールド名の一覧。各フィールドは、後続のワークフローステップで参照できる個別の出力になります（例：$steps.block\_name.field\_name）。JSON内に存在するフィールドはその値とともに抽出され、存在しないフィールドはNoneに設定されます。'error\_status' フィールド名は予約済み（常に出力として含まれます）であり、この一覧では使用できません。フィールド名はJSONキーと完全に一致する必要があります。 | ❌  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `JSONパーサー` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `raw_json` ([*`language_model_output`*](/workflows/ja/gaido/developer-guide/kinds/language-model-output.md)): 解析するJSON文字列。生のJSON文字列（例：'{"key": "value"}'）またはMarkdownコードブロックで囲まれたJSON（例： `json {"key": "value"}` ）。Markdownで囲まれたJSONはLLM/VLMの応答でよく見られます。複数のMarkdown JSONブロックがある場合、最初のブロックのみが解析されます。文字列はPythonのJSONパーサーを使って解析され、指定されたフィールドが出力として抽出されます。
* 出力
  * `error_status` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。
  * `*` ([`*`](/workflows/ja/gaido/developer-guide/kinds/wildcard.md))：任意の要素に相当します。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/json_parser@v1",
	    "raw_json": "$steps.lmm.output",
	    "expected_fields": [
	        "field_a",
	        "field_b"
	    ]
	}
```

</details>
