如何按属性名称排序?

问题描述

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

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

我希望它是这样的:

 person=[
 {
   "Address": "ABC","Phone" : "1234"
 },{
   "Address": "DEF","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"
    }
  ]
}