【クエリビルダ】JSONデータを扱う

[Sharperlight](https://sharperlight.jp/) **クエリビルダ**は、場合によっては API エンドポイントに対してクエリを実行できます。
今回はこの記事で簡単な例を示します。

Sharperlight アプリケーション メニューから**クエリビルダ**を起動します。
## フィルター ##
`モード`フィルタには、**概要レポート**を選択します。
**システム** を、`製品` フィルタに設定します。
`テーブル`フィルタには、索引リストから **Web ページのテーブル、CSV、JSON、XML またはOData** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/326f7ed2-1912-b6e6-3bb3-6b456f9e68e1.png)
テーブルが選択されるとすぐに、関連するフィルタと`選択`のリストが読み込まれます。
背景が赤のフィルタは、選択したテーブルに関連付けられたフィルタです。
また、フィルタとして使用するために、選択リストから`ヘッダーの内容`フィルタを選択しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/5a6a459a-8793-145e-0ef5-d6a1447e3382.png)
今回は、`URLリンク`、`ヘッダーの内容`、および`開始位置`フィルタの値を設定します。
この URL を `URLリンク` フィルタに使用します。 これは、PayPal API トランザクションのサンプル URLクエリです。
```
https://api-m.paypal.com/v1/reporting/transactions?start_date=2022-10-01T00:00:00Z&end_date=2022-10-31T23:59:59Z&fields=shipping_info&page_size=100&page=1
```
次に、`ヘッダーの内容`に対して、次のように値を設定します。 **今回は、有効なアクセス トークンが既にあると仮定します。*
```
Authorization: Bearer SA21AANjR8w_v4H0g5WhPp-Ara9yI38h1nvZ1Mvd3ALzcsd34tPlrfOf5pgPWBEolQxb2aBe2_S06zLDM3db2I51R742zAI3orxvYQE
```
最後に、これは`開始位置`フィルター用の値です。 これは、JSONデータのどの部分を抽出する必要があるかを示します。
```
transaction_details
```
つまり、API から返された JSON データのこの部分です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/5c2b4055-f617-e11e-56f9-c21646ff2b89.png)
## 選択 ##
以上 3 つのフィルタ値が入力され、このツリー ビューが `選択`領域に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/68a0ed43-0f1d-71bc-7a88-7c9661db43ff.png)
ご覧のとおり、**transactio_info** と **shipping_info** が JSON データから抽出されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d08dbb77-0f34-7361-9476-442be9fe0cd1.png)
## 出力 ##
**transactio_info** と **shipping_info** を `出力`領域に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/300bc108-ae5a-d85d-f8b9-21a050cff7e5.png)
## プレビュー ##
`プレビュー`ボタンでクエリを実行します。 このようにレコードが返ってきます。 これら 2 つのフィールドの内容はまだ JSON 形式であり、さらに解析する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/77466552-48bf-51c1-5915-2aef1bd4b89a.png)
今回は拡張表現で一つ一つ値を抽出していきます。
クエリに戻り、右クリック メニューから**拡張表現を追加**を選択します。
**JSONNamedValue()** 関数を使用して JSON の `transaction_info` から `paypal_account_id` の値を抽出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/2fe8a843-9a8d-3d1a-ba98-e1c9f09d9653.png)
クエリ結果はこのようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/58f9fc45-caf2-068e-97d2-ae95fb49d5b1.png)
同じ方法でさらに 2 つのフィールドの値を抽出してみます。
**transaction_info** はこれらの拡張表現によって参照されますが、表示されるべきではないため、非表示にします。更に **shipping_info** についても同じことを行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/4e46833f-650d-17ad-b26f-8f261d2f8f3e.png)
結果を確認してみましょう。 それらはうまく抽出されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/4da87884-c5bf-40d5-1da7-f24dc2d4e841.png)
同じ方法を使用して、JSON形式のままの`Transaction Amount`フィールドの値を更に解析してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/8b5bbe29-def2-9323-4c79-f466e8e4d2e5.png)
その結果は、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/79607c76-484c-4798-0e3c-33fdad794fb9.png)
Query Builder には、このようなクエリで取得した JSON データを扱う機能があります。
いろいろな用途に合わせて使ってみてください。

この記事を読んでいただきありがとうございます。