以对象数组作为输入的 JOLT 前缀汤示例

问题描述

我正在查看 jolt-demo.appspot 中的前缀汤示例,这似乎几乎正是我所需要的,但是我对输入进行了小幅修改以在数组中包含多个对象,然后我将规范更改为有 * 通配符来说明数组,结果并不完全符合我的需要。我显然错过了一些基本的东西,但我不知道是什么。任何帮助将不胜感激。

输入 JSON

[
  {
    "rating-primary": 1,"rating-Price": 2,"rating-Design": 4,"rating-ratingDimension3": 1
  },{
    "rating-primary": 7,"rating-Price": 8,"rating-Design": 9,"rating-ratingDimension3": 10
  }
]

规格

[
  {
    "operation": "shift","spec": {
      "*": {
        "rating-primary": "rating","rating-*": "Secondaryratings.&(0,1)"
      }
    }
  }
]

预期输出

[
    {
        "rating": 1,"Secondaryratings": {
            "Primary": 1,"Price": 2,"Design": 4,"ratingDimension3": 1
        }
    },{
        "rating": 7,"ratingDimension3": 1
        }
    }
]

实际输出

{
  "rating" : [ 1,7 ],"Secondaryratings" : {
    "Price" : [ 2,8 ],"Design" : [ 4,9 ],"ratingDimension3" : [ 1,10 ]
  }
}

解决方法

我想通了。这是规范,以防其他人需要它。

[
  {
    "operation": "shift","spec": {
      "*": {
        "rating-*": "[&1].SecondaryRatings.&(0,1)","rating-primary": "[&1].Rating"
      }
    }
  }
]
'''