如何按属性名称排序?

How to order by attribute name?

需要一些帮助来对数组元素内的属性进行排序。 所以我有这样的有效载荷:

person=[
 {
   "Phone" : "1234",
   "Name" : "John",
   "Address": "ABC"
 },
 {
   "Phone" : "5678",
   "Name" : "Mary",
   "Address": "DEF"
 },
]

我希望得到这样的结果:

 person=[
 {
   "Address": "ABC",
   "Name" : "John",
   "Phone" : "1234"
 },
 {
   "Address": "DEF",
   "Name" : "Mary",
   "Phone" : "5678"
 },
]

我试了一下:

%dw 1.0
%output application/json
---
"result": payload[0] orderBy $$

但它没有排序,如果我尝试使用

orderBy $

我收到错误:如果类型为 ::object...,则无法比较值...

您需要映射每个元素,然后对每个元素进行排序:

%dw 1.0
%output application/json
---
"result": payload map ($ orderBy $$)

输出:

{
  "result": [
    {
      "Address": "ABC",
      "Name": "John",
      "Phone": "1234"
    },
    {
      "Address": "DEF",
      "Name": "Mary",
      "Phone": "5678"
    }
  ]
}