Okta Workflowsは、アイデンティティプロセスを自動化するためのノーコードプラットフォームです。Workflowsチームは、ビルダーからの質問に回答するオフィスアワーを毎週開催しています。
このブログ記事は、オフィスアワーで寄せられた質問「Workflowsでドット表記のJSONパスを読み取る方法」を基に作成されています。
はじめに
Workflowsの自動化を構築する際には、JSONオブジェクトから値を読み取る必要が生じることがよくあります。たとえば、JSON形式でデータを返す外部APIエンドポイントから取得する場合などです。Workflowsには、JSONから値を読み取る(取得する)ためのカードが2つあります。
- Object – Get
- Object – Get Multiple
以下のJSONを使用して、カードの動作を示します。
{
"product": "ice cream",
"ingredients": {
"ingredient": [{
"id": 100,
"type": "chocolate"
},
{
"id": 200,
"type": "vanilla"
},
{
"id": 300,
"type": "caramel"
}
]
},
"shop": {
"inventory": {
"instock": 100,
"ordered": 50
}
}
}
ドット表記は、JSON内の項目に対応するパスです。
例えば、パスがproductの場合は次が返されます。
ice cream
Object – Getカードを使用してJSONを読み取る
Workflowsでは、Object – Getを使用してJSONパスを読み取ります。
Getカードを使用してJSONパスデータを読み取る
このカードをテストします。
Getカードのテスト
他の例も見てみましょう。
パスにingredients.ingredient.0を使用します。結果は次のとおりです。
{
"id": 100,
"type": "chocolate"
}
Object – Getカードを使用してテストした場合の結果:
パスでのドット表記の使用
出力タイプはJSONタイプと一致させる必要がある点に注意してください。入力したパスでプレーンテキストが取得される場合、タイプはTextに設定する必要があります。パスがオブジェクトを取得する場合、タイプをObjectに設定する必要があります(設定しないと、誤った結果が返されます)。
上記の例を使用し、出力タイプをTextに設定すると、次のようになります。
不適切な出力タイプでのGetカードのテスト
正しい出力タイプの設定:
正しい出力タイプでのGetカードのテスト
この例では、ingredients.ingredient.1.typeを使用して配列にアクセスする方法を示します。
ドット表記パスを使用した配列へのアクセス
出力が文字列であるため、出力タイプはTextに設定されています。
shop.inventoryのパスを使用したもう1つの例では、次の値が返されます。
{
"instock": 100,
"ordered": 50
}
Getカードを使ってJSONオブジェクトにアクセスするテスト
出力はオブジェクトであるため、出力タイプはObjectに設定されています。
Object – Get Multipleを使用してJSONを読み取る
Object – Getは、単一のJSONパスを出力します。Object – Get Multipleカードも同様に機能し、複数のパスを出力できます。出力として必要なパスを任意の数だけ入力します。
Get Multipleカードの使用方法
Object – Get Multipleカードを使用する場合、出力タイプは指定する各パスの項目ごとに個別に設定する必要があります。
Get Multipleカードのテスト
JSONPath Online Evaluatorは、ドット表記のパスをテストできるオンラインツールです。
JSONPath Online Evaluator