Dataweave 有效负载转换 - NetSuite SOAP

问题描述 投票:0回答:1

我有 JSON 有效负载,需要对其进行转换并调用 NetSuite。 有效负载:

 [
    {
      "Netsuite Sales Order Id": "15922713",
      "Project Number": "CSPRJ0018639",
      "Project Sys Id": "54d948a11b680690fbe1535b234bcb26",
      "Netsuite Sales Order Line Id": "1",
      "Project Task Number": "CSPRJTASK0858566",
      "Project Task Sys Id": "85d948a11b680690fbe1535b234bcb50"
    },
    {
      "Netsuite Sales Order Id": "15922713",
      "Project Number": "CSPRJ0018639",
      "Project Sys Id": "54d948a11b680690fbe1535b234bcb26",
      "Netsuite Sales Order Line Id": "3",
      "Project Task Number": "CSPRJTASK0858567",
      "Project Task Sys Id": "4ad9c4ad1b280290751bcaab234bcb8a"
    }
  ]

我需要使用 NetSuite 销售订单 ID 并在正文级别字段上使用此有效负载更新销售订单。

我使用过但不起作用的代码:

%dw 2.0
output application/xml
ns ns0 urn:messages_2021_1.platform.webservices.netsuite.com
ns ns01 urn:relationships_2021_1.lists.webservices.netsuite.com
ns ns02 urn:core_2021_1.platform.webservices.netsuite.com
ns ns03 urn:sales_2021_1.transactions.webservices.netsuite.com
ns xsi http://www.w3.org/2001/XMLSchema-instance
---
{
    ns0#update: {
        (payload map((item,index) ->
            ns0#record @(internalId: item."Netsuite Sales Order Id", "xmlns:ns03": ns03, xsi#"type": "ns03:SalesOrder"): {
            ns03#customFieldList: {
                StringCustomFieldRef__custbody_eb_mulesoft_data: {
                    ns02#value: { NetsuiteSalesOrderLineId: item."Netsuite Sales Order Line Id",
                        ProjectSysId: item."Project Sys Id",
                    ProjectNumber: item."Project Number",
                    ProjectTaskNumber: item."Project Task Number",
                    ProjectTaskSysId: item."Project Task Sys Id"
                    
                    }
                    
                }
            }
        }
        ))
    }
}

我需要将整个有效负载以 JSON 形式发送到 NetSuite 销售订单正文级别字段。 字段:custbody_eb_mulesoft_data

请帮忙。

soap mule netsuite dataweave mule4
1个回答
0
投票

如果你的物体看起来像这样:

{
  "Payload": [
    {
      "Netsuite Sales Order Id": "15922713",
      "Project Number": "CSPRJ0018639",
      "Project Sys Id": "54d948a11b680690fbe1535b234bcb26",
      "Netsuite Sales Order Line Id": "1",
      "Project Task Number": "CSPRJTASK0858566",
      "Project Task Sys Id": "85d948a11b680690fbe1535b234bcb50"
    },
    {
      "Netsuite Sales Order Id": "15922713",
      "Project Number": "CSPRJ0018639",
      "Project Sys Id": "54d948a11b680690fbe1535b234bcb26",
      "Netsuite Sales Order Line Id": "3",
      "Project Task Number": "CSPRJTASK0858567",
      "Project Task Sys Id": "4ad9c4ad1b280290751bcaab234bcb8a"
    }
  ]
}

那么你的转变应该是这样的:

%dw 2.0
output application/xml
ns ns0 urn:messages_2021_1.platform.webservices.netsuite.com
ns ns01 urn:relationships_2021_1.lists.webservices.netsuite.com
ns ns02 urn:core_2021_1.platform.webservices.netsuite.com
ns ns03 urn:sales_2021_1.transactions.webservices.netsuite.com
ns xsi http://www.w3.org/2001/XMLSchema-instance
---
{
    ns0#update: {
        (payload.Payload map ((item,index) ->
            ns0#record @(internalId: item."Netsuite Sales Order Id", "xmlns:ns03": ns03, xsi#"type": "ns03:SalesOrder"): {
            ns03#customFieldList: {
                StringCustomFieldRef__custbody_eb_mulesoft_data: {
                    ns02#value: { NetsuiteSalesOrderLineId: item."Netsuite Sales Order Line Id",
                        ProjectSysId: item."Project Sys Id",
                    ProjectNumber: item."Project Number",
                    ProjectTaskNumber: item."Project Task Number",
                    ProjectTaskSysId: item."Project Task Sys Id"
                    
                    }
                    
                }
            }
        }
        ))
    }
}

注意“payload.Payload”

© www.soinside.com 2019 - 2024. All rights reserved.