DataWeave 是否保持 JSON 属性的顺序?

Does DataWeave keeps the order of JSON properties?

我在 DataWeave 文档中看不到它是否保持属性的顺序。例如在这段代码之后:

%dw 1.0
%output application/json
---
{
    giftcards :  payload  map  {
        "currency" : $.currency,
        "giftcardId" : $."_id",
        "amount" : $.price
    }
}

我们能否期望在响应中获得以下属性序列:

  1. 货币
  2. giftcardId
  3. 数量

简短答案是 "Yes",但一般答案是 "No"。 即使 Mule 也应该产生 JSON 与 DateWeave 中定义的完全一致,但这并不意味着其他转换不会破坏此顺序。对 Map 的简单转换和返回将根据特定的 Map 实现更改它。它可以是 Hashtable 或有序集合以保持 key/value 对,因此顺序自然会被打破。

底线 - 因为您不知道数据会有什么转换 - 不要依赖原始顺序或某些中间阶段顺序。始终由自己控制。例如 - 从集合中提取时按字母顺序排列键。

它将保留您的数据顺序。因为 dataweave 下的所有声明都在输出指令下。输出指令指定转换中的输出类型,使用 content/type 指定。只能指定一个输出,然后在 DataWeave 主体中定义此输出的结构。