簡體   English   中英

使用 mule dataweave 將 JSON 數組轉換為行

[英]JSON array into line using mule dataweave

我有以下要求。

輸入是

{ "packageConfiguration": [
      {
        "packageId": [
          "AIM_PACKAGE"
        ],
        "component": [
          "Handbook"
        ],
        "fieldName": [
          "Upload Handbook Document"
        ],
        "assetUrl": [
          "sflydamlocation.handbookfilename.pdf"
        ]
      }
    ]}

我需要將上面的 json 數組轉換為這種輸出格式:

 {
        "pakage": ""packageId":"AIM_PACKAGE", "component":"Handbook",  "fieldName":"Upload Handbook Document","assetUrl":"sflydamlocation.handbookfilename.pdf""
}

您可以將所有字段視為字符串,但請注意:

  1. 必須對內部引號進行轉義。 否則輸出不是有效的 JSON。
  2. 考慮到“包”的值也不是真正有效的 JSON,以防您想解析它。 它應該是一個對象(例如“ { \\"package\\":... }")
  3. 此腳本期望所有數組都恰好有 1 個元素。 更多的元素被忽略,更少的元素可能會出錯。 這不是一個非常穩健的設計。

腳本(不推薦):

%dw 2.0
output application/json

---
package: using (pc = payload.packageConfiguration[0]) (

        " \"packageId\": \"$(pc.packageId[0])\", " ++  
        " \"component\": \"$(pc.component[0])\" "  ++
        " \"fieldName\": \"$(pc.fieldName[0])\" "  ++
        " \"assetUrl\": \"$(pc.assetUrl[0])\" "
 )

輸出:

{
  "package": " \"packageId\": \"AIM_PACKAGE\",  \"component\": \"Handbook\"  \"fieldName\": \"Upload Handbook Document\"  \"assetUrl\": \"sflydamlocation.handbookfilename.pdf\" "
}

這是一個丑陋的字符串連接。 相反,我建議只將所需的輸出編寫為 JSON 對象。

腳本(推薦):

%dw 2.0
output application/dw
var pc = payload.packageConfiguration[0]
---
package: 
    write({
        packageId: pc.packageId[0],  
        component: pc.component[0],  
        fieldName: pc.fieldName[0],  
        assetUrl: pc.assetUrl[0]
        }, "application/json") replace /\n/ with ""

輸出

{
  "package": "{  \"packageId\": \"AIM_PACKAGE\",  \"component\": \"Handbook\",  \"fieldName\": \"Upload Handbook Document\",  \"assetUrl\": \"sflydamlocation.handbookfilename.pdf\"}"
}

第二個腳本更簡潔,更不容易出錯,並返回一個轉義的 JSON 對象,您可以將其轉義為 JSON。

這樣的事情應該可以工作,除非您需要更靈活的東西。 我假設您正在使用 Mule3/DW1:

%dw 1.0
%output application/json

%var packageConfig = payload.packageConfiguration[0]
---
{
  package: packageConfig mapObject ((value, key) -> {
    (key): value[0]
  })
}

暫無
暫無

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

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