Power Automate のクラウドフローで処理を作成していると、JSON の値を利用するために「JSON の解析」を用いることが度々あります。

このとき、元の JSON の形によっては、解析後の値が判別しにくいことがあります。そうした場合には、人が目で見て分かりやすいように、解析して得られる値に名前を付けることができます。

JSON の解析の結果が使いづらいパターン

使いづらいなと感じるのは、次のような JSON を解析し利用する場合です。

{
    "Data1":{
        "Value": 12345
    },
    "Data2":{
        "Value": 12345
    },
    "Data3":{
        "Value": 12345
    },
    "Data4":{
        "Value": 12345
    }
}

この JSON のデータを用いて、JSON の解析アクションのスキーマを設定するため、「サンプルから生成」の機能を利用すると、次のようなスキーマが作られます。

{
    "type": "object",
    "properties": {
        "Data1": {
            "type": "object",
            "properties": {
                "Value": {
                    "type": "integer"
                }
            }
        },
        "Data2": {
            "type": "object",
            "properties": {
                "Value": {
                    "type": "integer"
                }
            }
        },
        "Data3": {
            "type": "object",
            "properties": {
                "Value": {
                    "type": "integer"
                }
            }
        },
        "Data4": {
            "type": "object",
            "properties": {
                "Value": {
                    "type": "integer"
                }
            }
        }
    }
}

これによって Power Automate は、JSON の構造を理解し、フローの処理で値を利用できるようになるのですが、各値は次のように表示されます。

それぞれ Data1、Data2、Data3、Data4 の中に Value という値があるのですが、フローの作成画面で表示される選択肢からは、どの Value なのか判断が付かないというわけです。

値に名前を付ける

そこで、JSON スキーマを編集することで、あとから利用しやすいように、値に名前を付けておくことができます。

{
    "type": "object",
    "properties": {
        "Data1": {
            "type": "object",
            "properties": {
                "Value": {
                    "type": "integer",
                    "title": "Value of Data1"
                }
            }
        },
        "Data2": {
            "type": "object",
            "properties": {
                "Value": {
                    "type": "integer",
                    "title": "Value of Data2"
                }
            }
        },
        "Data3": {
            "type": "object",
            "properties": {
                "Value": {
                    "type": "integer",
                    "title": "Value of Data3"
                }
            }
        },
        "Data4": {
            "type": "object",
            "properties": {
                "Value": {
                    "type": "integer",
                    "title": "Value of Data4"
                }
            }
        }
    }
}

変更した箇所は、それぞれの Value を示している記述に、title を追加しています。この title の値によって、Value に名前を付けて、フローの中で扱いやすくしています。

このように、以降のアクションで値を利用する際、指定した名前で選択できるようになります。

さいごに

ちょっとの工夫と手間で、すごく使いやすくなるので、この方法は覚えておいて損はないと思いました。これは良い。