如何使用JOLT转换将顶级对象移动到数组属性

时间:2019-03-07 01:14:36

标签: json jolt

有没有一种方法可以在具有顶级对象值的数组项中添加额外的属性? 我的输入就像

{
  "ABC": {
    "news": [{
        "datetime": "2019-03-06T14:12:00-05:00",
        "source": "source 1",
        "summary": "asd ada dsd f ef sdf vert"
      }
    ]
  },
  "XYZ": {
    "news": [{
        "datetime": "2019-03-06T14:12:00-05:00",
        "source": "source 1",
        "summary": "asd ada dsd f ef sdf vert"
      }
    ]
  }
}

,预期输出为

"news": [{
    "symbol": "ABC",
    "datetime": "2019-03-06T14:12:00-05:00",
    "source": "source 1",
    "summary": "asd ada dsd f ef sdf vert"
  },
  {
    "symbol": "XYZ",
    "datetime": "2019-03-06T14:12:00-05:00",
    "source": "source 1",
    "summary": "asd ada dsd f ef sdf vert"
  }
]

通过使用以下规范,我可以合并两个数组,但是我很难在项目中添加符号。

[{
  "operation": "shift",
  "spec": {
    "*": {
      "news": {
        "*": ""
      }
    }
  }
}]

1 个答案:

答案 0 :(得分:0)

我设法使用2个班次规则来做到这一点。首先,我将符号名称提取到一个数组中,并合并新闻列表,然后,我将symbol元素推入新闻项中(使用正确的数组索引位置):

 [{
     "operation": "shift",
     "spec": {
       "*": {
         "$": "symbol",
         "news": {
           "*": "news"
         }
       }
     }
}, {
     "operation": "shift",
     "spec": {
       "news": {
         "*": {
           "@(3,symbol[&])": "news[&1].symbol",
           "*": "news[&1].&"
         }
       }
     }
}
 ]

查看这是否是您想要的。 干杯