Azure Logic App:プロパティがjsonオブジェクトに存在するかどうかを確認する

Aug 22 2020

次のような「SQLServerGetRecords(V2)」アクションからのJSONがあります。残念ながら、応答にはnull値のフィールドは含まれません。私の例では、「名前」フィールドは一部のアイテムではnullです。

[
  {
    "@odata.etag": "",
    "ItemInternalId": "378fd3bc-0cd4-4171-8e7d-462461086580",
    "RowID": 1,
    "Name": "1234"
  },
  {
    "@odata.etag": "",
    "ItemInternalId": "378fd3bc-0cd4-4171-8e7d-462461086580",
    "RowID": 1
  }, ...
}

これらのアイテムを繰り返し、各アイテムを別のHTTPエンドポイントに渡したいと思います。

私が使用した場合のアイテム()[「名前」]または項目()?[「name」を]名前フィールドにアクセスするには、それは言って2番目の項目のために失敗します。

プロパティ 'Name'が存在しないため、テンプレート言語式を評価できません。使用可能なプロパティは...

xpath関数をxml関数と組み合わせて値を取得する人がたくさんいます。

https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference

しかし、xpath(xml(item())、 '/ Name')のような思考を使用すると、次のようなエラーがスローされます。

テンプレート言語関数の「xml」パラメーターが無効です。指定された値をXMLに変換することはできません: 'JSONルートオブジェクトには、属性に変換されるプロパティ' @ odata.etag 'があります。ルートオブジェクトは、属性プロパティを持つことはできません。DeserializeRootElementNameを指定することを検討してください。パス '[' @ odata.etag ']'。 '。参照してくださいhttps://aka.ms/logicexpressions#xml 使用法の詳細については。

アップデート1

私はこれを次の式で動作させました、私は本当にこれが好きではありません

first(xpath(xml(addProperty(json('{}'), 'obj', item())), '//obj/Name[1]/text()'))

私の問題を解決する他の簡単な方法はありますか?前もって感謝します

回答

1 HuryShen Aug 25 2020 at 12:48

この問題のために、あなたが「得ると思われる名前」に「値のそれぞれについて、」の応答からループ「のSQLServer GetRecords(V2)を直接」。「JSONの解析」アクションを使用するだけで、この問題を簡単に解決できます。以下の私のロジックアプリを参照してください:

1.SQLServerGetRecords(V2)」からの応答をシミュレートするために、あなたと同じjsonデータを格納する変数を初期化します。

2.次に、「JSONの解析」アクションを追加してjsondataを解析します。「サンプルペイロードを使用してスキーマを生成する」ボタンをクリックして、jsondataをそこにコピーできます。スキーマが自動的に生成されます。以下に示すスキーマ(注意スキーマは、これらのフィールドが required プロパティで必須かどうかを指定します)。

{
    "items": {
        "properties": {
            "@@odata.etag": {
                "type": "string"
            },
            "ItemInternalId": {
                "type": "string"
            },
            "Name": {
                "type": "string"
            },
            "RowID": {
                "type": "integer"
            }
        },
        "required": [
            "@@odata.etag",
            "ItemInternalId",
            "RowID"
        ],
        "type": "object"
    },
    "type": "array"
}

3.今「を使用し、それぞれについてループへの」body「から解析JSON」と「設定を」ボックスName「からプロパティ解析JSON」。

4.ロジックアプリを実行します。エラーメッセージなしで正常に動作します。

2 JasonNam Aug 22 2020 at 00:35

JSONを使用している場合:

item()?['Name']