在数据编织中在哪里使用花括号和开括号

Where to use curly brace and open brace in data weave

我对数据编织代码有这样的输入

[
  {
    "CountryCode": "????",
    "District": "????",
    "ID": 1,
    "Name": "????",
    "Population": 1
  },
  {
    "CountryCode": "????",
    "District": "????",
    "ID": 200,
    "Name": "????",
    "Population": 1000
  }
]

数据编织代码为

%dw 1.0
%output application/xml
---

    WorldDetails: {
        (payload map ((payload01 , indexOfPayload01) -> {
            EachDetail: {
                countrycode: payload01.CountryCode,
                district: payload01.District,
                id: payload01.ID,
                Name: payload01.Name,
                population: payload01.Population
            }
        }))
    }

这是结果输出

 <?xml version='1.0' encoding='UTF-8'?>
<WorldDetails>
  <EachDetail>
    <countrycode>????</countrycode>
    <district>????</district>
    <id>1</id>
    <Name>????</Name>
    <population>1</population>
  </EachDetail>
  <EachDetail>
    <countrycode>????</countrycode>
    <district>????</district>
    <id>200</id>
    <Name>????</Name>
    <population>1000</population>
  </EachDetail>
</WorldDetails>

我们可以在代码中看到大括号和左大括号。我对在代码中的什么地方使用这两种大括号感到很困惑。任何人都可以在代码中解释为什么他们在特定代码行使用特定类型的大括号。只是想知道在数据编织代码中的什么地方使用开大括号和闭大括号。

稍微清理一下:

%dw 1.0
%output application/xml
---
WorldDetails: {
    (payload map {
        EachDetail: {
            countrycode: $.CountryCode,
            district: $.District,
            id: $.ID,
            Name: $.Name,
            population: $.Population
        }
    })
}

他们是我的想法:

圆括号 () 用于计算表达式、将参数传递给函数或更改操作顺序。

括号{}用于定义对象。

如果去掉括号,它看起来像这样:

WorldDetails: payload map {
    EachDetail: {
        countrycode: $.CountryCode,
        district: $.District,
        id: $.ID,
        Name: $.Name,
        population: $.Population
    }
}

你会得到一个错误 Cannot coerce a :array to a :object 因为你的地图 return 是一个数组,而不是一个对象。所以你评估地图,并用 {} 将它强制到一个对象中。如果你想让你的地图有意到 return 一个数组,你可以使用 payload map ().

我相信会有更好的答案,然后我可以删除我的post。这就是我理解他们的方式。