当前位置: 首页 > 知识库问答 >
问题:

Jolt将复杂json转换成平面json

陈兴朝
2023-03-14

我希望Jolt将一个复杂的json转换为下面所需的json。

输入JSON:

{
  "Rating": 1,
  "SecondaryRatings": [
    {
      "Design": 4,
      "Price": 2,
      "RatingDimension3": 1,
      "Arr1": [
        {
          "Val1": 34
        },
        {
          "Val2": 45
        }
      ]
    },
    {
      "Design": 44,
      "Price": 23,
      "RatingDimension3": 12,
      "Arr1": [
        {
          "Val1": 56
        },
        {
          "Val2": 22
        }
      ]
    }
  ]
}

输出量的希望值

json prettyprint-override">[
  {
    "Design": 4,
    "Price": 2,
    "RatingDimension3": 1,
    "rating-primary": 1,
    "Val1": 34,
    "Val2": 45
  },
  {
    "Design": 44,
    "Price": 23,
    "RatingDimension3": 12,
    "rating-primary": 1,
    "Val1": 56,
    "Val2": 22
  }
]

我试过遵循Jolt Spec

[
  {
    "operation": "shift",
    "spec": {
      "SecondaryRatings": {
        "*": {
          "*": {
            "*": {
              "@(2,Design)": "[&3].Design",
              "@(2,Price)": "[&3].Price",
              "@(2,RatingDimension3)": "[&3].RatingDimension3",
              "Val1": "[&3].Val1",
              "Val2": "[&3].Val2",
              "@(4,Rating)": "[&3].rating-primary"
            }
          }
        }
      }
    }
  }
]

但得到了以下输出

[ 
 {
   "Design" : [ 4, 4, 4, 4, 4 ],
   "Price" : [ 2, 2, 2, 2, 2 ],
   "RatingDimension3" : [ 1, 1, 1, 1, 1 ],
   "rating-primary" : [ 1, 1, 1, 1, 1 ],
   "Val1" : 34,
   "Val2" : 45
 }, 
 {
   "Design" : [ 44, 44, 44, 44, 44 ],
   "Price" : [ 23, 23, 23, 23, 23 ],
   "RatingDimension3" : [ 12, 12, 12, 12, 12 ],
   "rating-primary" : [ 1, 1, 1, 1, 1 ],
   "Val1" : 56,
   "Val2" : 22
  } 
]

因此,正如所见,除了最后一个级别值之外,所有其他值都具有具有重复值的数组。任何人都可以帮助解决 Jolt 规范中缺失或错误的地方吗?

共有1个答案

昌乐
2023-03-14

您可以直接遍历外部数组的索引(SecondaryRatings)而不是内部数组的索引

[
  {
    "operation": "shift",
    "spec": {
      "SecondaryRatings": {
        "*": {
          "*": "[&1].&",
          "@(2,Rating)": "[&].rating-primary",
          "Arr1": {
            "*": {
              "*": "[&3].&"
            }
          }
        }
      }
    }
  }
]

在这种情况下,除了Rating之外,无需单独编写所有元素

 类似资料:
  • 我有一个关于使用jolt将平面json转换成嵌套json的问题。我对jolt很陌生,这是我的意见 我编写了jolt spec,但我没有得到想要的输出 我的预期产出是: 任何震动专家都可以帮助我获得所需的输出。我应该在颠簸中使用多个变换,还是可以在一个震动变压器中获得所需的输出?

  • 输入 json : 预期输出: 我想有一个颠簸转换,它可以嵌套很少的田地。

  • 所以目前我看到的是这样的: 这是我目前编写的Jolt规范(编辑): 以及转换后的输出: 任何帮助都是非常感谢的。

  • 当调用外部API时,我收到了一个复杂的json结构,我需要根据我们的需要将其转换为简单的json。我发现jolt具有转换json的能力,但无法提出jolt规范。 我的输入Json数组—— 我的输出 Json 结构应该看起来像 - 我尝试了多种jolt规格,但无法得到想要的输出。这种情况下最理想的jolt规格应该是什么?

  • 我只需要使属性元素与 id 处于同一级别。 我只是有一个问题,以复制属性是在同一水平。 这是我的示例JSON 这是我的示例转换。 期望的输出将是

  • 我是JOLT转换的新手,我发现它在JSON转换中非常有用。但是当我遇到嵌套且复杂的JSON时,我感到困惑。 下面的JSON是一个嵌套且复杂的JsonArray,我需要将其转换为完全扁平的JsonArray。 JSON输入: 如您所见,我们有一个空的对象“字母类型”:[],但在其他Json对象中,“字母类型”有自己的对象并且不是空的。 下面的JSON是我的预期输出。 预期输出: 我需要的是一个JOL