Где использовать фигурную скобку и открытую скобку в переплетении данных - PullRequest
0 голосов
/ 28 января 2020

У меня есть такой ввод для кода переплетения данных

[
  {
    "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>

мы можем видеть фигурные и открытые скобки в коде. У меня много путаницы, где именно использовать эти два вида скобок в коде. Может ли кто-нибудь объяснить в коде, почему они использовали определенные виды скобок в определенной строке кода. просто хотите знать, где использовать открытые и закрытые фигурные скобки в коде данных.

1 Ответ

2 голосов
/ 28 января 2020

Немного очищая его:

%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, потому что ваша карта возвращает массив, а не объект. Таким образом, вы оцениваете карту и превращаете ее в объект с {}. Если вы хотите, чтобы ваша карта специально возвращала массив, вы можете использовать payload map ().

Я уверен, что будет лучший ответ, и тогда я смогу удалить свой пост. Это то, как я их понимаю.

...