# フィールドを抽出

> title や authorMeta.name のようなフィールドやネストしたパスを JSON データから取り出し、テキスト、項目ごとに実行するためのリスト、または JSON として送ります。

Source: https://nodaro.ai/ja/docs/nodes/automate/extract-field

**フィールドを抽出**（Extract Field）ノードは、JSON データから 1 つのフィールド、またはネストしたフィールドのパスを取り出します。上流のデータから検出されたフィールドの中から選ぶか、`authorMeta.name` のようなドットパスを入力します。ノードは結果を、1 つのテキスト、次のノードを値ごとに 1 回ずつ実行できるリスト、生の JSON のいずれかとして送ります。すぐに実行され、クレジットはかかりません。

- Found in: Automate › Logic & Data
- Output: data
- API type: `extract-field`

## 使いどころ
- バッチの前に、[**Web スクレイピング**（Web Scrape）](https://nodaro.ai/docs/nodes/automate/web-scrape)のすべての検索結果から `title` や `url` を取り出します。
- スクレイピングした各投稿の中にある投稿者名など、ネストした値を取り出します。
- JSON 配列を、[**プロンプト**（Prompt）](https://nodaro.ai/docs/nodes/automate/prompt)ノードに渡すテキストのリストに変えます。
- 2 つのフィールドを抽出ノードをつなげて、深くネストしたデータを取り出します。

## クイックスタート
### ノードを追加する
キャンバス上で Tab を押し、**自動化 › ロジックとデータ › フィールドを抽出**を選びます。

### JSON データを接続する
JSON を送るノードを、**ソース**入力に接続します。たとえば、[Web スクレイピング](https://nodaro.ai/docs/nodes/automate/web-scrape)や、JSON で回答する[プロンプト](https://nodaro.ai/docs/nodes/automate/prompt)ノードです。

### フィールドを選ぶ
設定パネルを開きます。上流のノードに結果ができると、**フィールド**に、見つかったフィールドが一覧表示されます。その中から 1 つを選ぶか、**カスタムパス…**を選んでドットパスを入力します。

### 出力タイプを選んで実行する
**出力タイプ**を**テキスト**、**リスト**、**JSON** のいずれかにして、ノードを実行します。**出力プレビュー**に結果が表示されます。

Workflow: フィールドを抽出がすべての検索結果のタイトルをリストとして取り出し、画像生成が見出しごとに 1 枚ずつ画像を作ります。

- Web スクレイピング → フィールドを抽出 (ソース)
- フィールドを抽出 → 画像生成 (プロンプト · 個別)

## 入力と出力
| 入力／出力 | 受け取るもの／送るもの | 説明 |
| --- | --- | --- |
| **ソース** | JSON、JSON を含むテキスト、またはリスト | 読み取るデータです。 |
| **テキスト**または **JSON** | テキスト、リスト、または JSON | **出力タイプ**で選んだ形式の、取り出した値です。出力タイプが JSON のときは、出力のラベルが **JSON** になります。 |

## 設定
| 設定 | 説明 |
| --- | --- |
| **フィールド** | 取り出すフィールドです。上流のノードを接続し、そのノードにデータができると、検出されたフィールドが表示されます。**（項目全体）**は、配列の各要素をそのまま使います。**カスタムパス…**を選ぶと、自分で入力する**パス**に切り替わります。 |
| **パス** | `caption` や `authorMeta.name` のようなドットパスです。データが配列の場合、パスは各要素に対して適用されます。空欄にすると、各要素をそのまま使います。**← フィールド一覧に戻る**で、検出されたフィールドに戻ります。 |
| **出力タイプ** | デフォルトの**テキスト**は、値を 1 行に 1 つずつ並べて、1 つのテキストにまとめます。**リスト**は各値を別々の項目として送り、**項目**と**個別**の接続モードで使えます。**JSON** は生の値を送ります。別のフィールドを抽出や、JSON を読み取るノードにつなげるときに使います。 |

## 2 つのフィールドを対応させる
コンセプトのリストにある `prompt` と `negative` のように、同じ配列の 2 つのフィールドを組み合わせて使うには、次のようにします。

1. フィールドごとにフィールドを抽出を 1 つずつ追加し、どちらも**出力タイプ**を**リスト**にします。
2. それぞれを次のノードの別々の入力に接続し、2 つの接続をどちらも**個別**にします。[**リスト**（List）](https://nodaro.ai/docs/nodes/automate/list)の 2 つの列に接続することもできます。

2 つのリストは、配列の要素ごとに対応します。3 回目の実行には、3 番目の要素の `prompt` と `negative` が渡されます。`negative` のない要素では、その実行にネガティブが渡されず、それ以降の実行がずれることもありません。値が 1 つもない要素に対して、実行が始まることはありません。そのため、動画のリンクのように一部の要素にしかないフィールドは、存在する値ごとに 1 回ずつ実行されます。

位置で選ぶときは、存在する値だけが数えられます。N 番目を指定する**項目**、範囲、**一括**は存在する値を数え、**テキスト**出力には存在する値が 1 行に 1 つずつ並びます。

## JSON を AI モデルが書く場合
[プロンプト](https://nodaro.ai/docs/nodes/automate/prompt)ノードに JSON を書かせる場合は、コードフェンスを付けず、前後に文章も付けずに、生の JSON だけを返すように指示します。そうしないと、フィールドを抽出は「Input is not valid JSON」というエラーで失敗します。

## クレジット
フィールドを抽出は無料です。

## ヒント
- **先に接続してから選ぶ**：**フィールド**の一覧は上流のデータから作られるので、キーの名前を覚えておく必要はありません。
- **フラットなリスト**：JSON が `["a", "b", "c"]` のようにすでにフラットなリストなら、**フィールド**は**（項目全体）**のままにして、**出力タイプ**を**リスト**にします。
- **ネストしたオブジェクト**：**パス**では、`videoMeta.duration` のようなドット記法を使います。
- **パスの途中にある配列**：2 つのノードをつなげます。1 つ目は**出力タイプ**を **JSON** にして `items` を取り出し、2 つ目は各項目から `title` を取り出します。
- **先にフィルターする**：取り出す前に一部の項目だけを残すには、[**リストをフィルター**（Filter List）](https://nodaro.ai/docs/nodes/automate/filter-list)を使います。

## Frequently asked questions

### スクレイピングした結果からタイトルを取り出すには、どうすればよいですか？

スクレイピングしたノードを「フィールドを抽出」に接続し、「フィールド」で title を選びます。次のノードをタイトルごとに 1 回ずつ実行するには、「出力タイプ」を「リスト」にします。すべてのタイトルを 1 行に 1 つずつ並べた 1 つのテキストにするには、「テキスト」にします。

### 出力タイプの「テキスト」「リスト」「JSON」の違いは何ですか？

「テキスト」は、値を 1 行に 1 つずつ並べて 1 つのテキストにまとめます。「リスト」は各値を別々の項目として送るので、次のノードを項目ごとに 1 回ずつ実行できます。「JSON」は生の値を送ります。2 つ目の「フィールドを抽出」や、JSON を読み取るほかのノードに渡すときに使います。

### フィールドを抽出に「Input is not valid JSON」と表示されるのはなぜですか？

受け取ったテキストが、純粋な JSON ではないためです。AI テキストノードに JSON を書かせる場合は、コードフェンスを付けず、前後に文章も付けない、生の JSON だけを返させる必要があります。

### prompt と negative のように、同じ項目の 2 つのフィールドを対応させたまま使うには、どうすればよいですか？

フィールドごとに「フィールドを抽出」を 1 つずつ追加し、どちらも「出力タイプ」を「リスト」にします。それぞれを次のノードの別々の入力に接続し、2 つの接続をどちらも「個別」にします。すると、3 回目の実行には、3 番目の要素の prompt と negative が渡されます。

### フィールドを抽出にクレジットはかかりますか？

いいえ。フィールドを抽出はすぐに実行され、無料です。
