簡體   English   中英

在Azure Logic Apps中解析/迭代時如何指定JSON節點屬性值?

[英]How to specify JSON node property values when parsing/iterating in Azure Logic Apps?

TL; DR如何在Azure Logic Apps的ParseJSON> For Each步驟中指定特定的JSON節點屬性,當設計者只允許我訪問父節點時?

我正在構建一個邏輯應用程序:

  1. 從外部系統接收和解析人員列表作為JSON數據
  2. 構造具有不同結構的新JSON文件
  3. 將新文件發布到第二個外部系統

第1項的JSON響應具有以下結構:

{
    "Success": true,
    "Message": "Completed",
    "Result": [
        {
            "EmployeeId": {
                "DisplayValue": "PW123",
                "FieldHistory": []
            },
            "EmailId": {
                "DisplayValue": "*****.*****@******.co.uk",
                "FieldHistory": []
            }
        },
        {
            "EmployeeId": {
                "DisplayValue": "PW789",
                "FieldHistory": []
            },
            "EmailId": {
                "DisplayValue": "*****.*****@******.co.uk",
                "FieldHistory": []
            }
        },
        .... removed for brevity
    ]
}

在設計器中,如果我添加Data Operations > Parse JSON > For Each步驟,它允許我指定屬性,但是級別太高:

在此輸入圖像描述

請注意,設計器為我提供了EmployeeId ,但實際上我需要EmployeeId.DisplayValue ,它既是屬性又是JSON格式的值,而不是僅包含EmployeeId或EmailId值的簡單字符串。

可以使用設計器在我需要的更深層次讀取JSON嗎?

如果我沒有弄錯你可以在Parse_JSON()['EmployeeId']['DisplayValue'] < - 行中做一些事情 - 這可能不是完全匹配,但語法是這樣的。

他們這樣做的方法是你要么在代碼視圖中寫入,要么在表達式中開始設計,添加動態內容的空白並添加['DisplayValue']標記。

為了支持AdAstra的輸入並提供規范的答案以供將來參考......

ForEach塊具有誤導性,實際上並不需要。 而是需要一個Select塊,但是必須在Code View中編輯(由@AdAstra建議)來挑選所需的字段:

在此輸入圖像描述

在此輸入圖像描述

我仍然需要弄清楚將輸出包裝在我想要的結構中,並在解決后更新。 事實證明,由於代碼視圖,將JSON重組為新結構也非常簡單。 我只是在現有邏輯周圍指定了我想要的輸出:

             "from": "@body('Parse_JSON')?['Result']",
             "select": {
                 "Option1": "Value1",
                 "Option2": "Value2",
                 "People": [
                     {
                         "Email": "@item()['EmailId']['DisplayValue']",
                         "FirstName": "@item()['FirstName']['DisplayValue']"
                     }
                  ]
             }

請注意,在代碼中指定后,Designer View不允許對更復雜的選擇進行修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM