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

时间:2016-08-10 08:11:33

标签: mule dataweave

我无法在DataWeave文档中看到它是否保留了属性的顺序。例如,在此代码之后:

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

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

  1. 货币
  2. giftcardId
  3. 金额

2 个答案:

答案 0 :(得分:1)

简短回答是“是”但一般回答是“否”。 即使Mule应该按照DateWeave中的定义生成JSON,但这并不意味着其他转换不会破坏此顺序。简单地转换为Map和back将根据特定的Map实现更改它。它可以是Hashtable或有序集合来保持键/值对,因此顺序将自然被打破。

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

答案 1 :(得分:0)

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