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

嵌套数组的Jolt转换。

艾星河
2023-03-14

我正在尝试编写一个规范来使用jolt转换进行以下转换。我只对更改json中键的名称感兴趣,值应该保持不变。帮帮我。

输入Json:

[
  {
    "list1": [
      {
        "id": "CPP1600000009846",
        "list2": [
          {
            "amount": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "code": "CONAMP"
          },
          {
            "amount": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "code": "PCCPRI"
          },
          {
            "amount": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "code": "PCCPCI"
          },
          {
            "amount": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "code": "PCCPII"
          }
        ]
      },
      {
        "id": "CPP1600000009846",
        "list2": [
          {
            "amount": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "code": "CONEIT"
          },
          {
            "amount": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "code": "CONCRT"
          },
          {
            "amount": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "code": "CONNCT"
          }
        ]
      }
    ]
  }
]

预期输出:

[
  {
    "listA": [
      {
        "Num": "CPP1600000009846",
        "listB": [
          {
            "rate": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "covg_code": "CONAMP"
          },
          {
            "rate": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "covg_code": "PCCPRI"
          },
          {
            "rate": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "covg_code": "PCCPCI"
          },
          {
            "rate": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "covg_code": "PCCPII"
          }
        ]
      },
      {
        "Num": "CPP1600000009846",
        "listB": [
          {
            "rate": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "covg_code": "CONEIT"
          },
          {
            "rate": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "covg_code": "CONCRT"
          },
          {
            "rate": {
              "formattedPrimeAmount": "0.00",
              "primeAmount": "0.00"
            },
            "covg_code": "CONNCT"
          }
        ]
      }
    ]
  }
]

共有2个答案

米项禹
2023-03-14

使用以下规格

[
  {
    "operation": "shift",
    "spec": {
        "list1" : {
            "*": {
                "id" : "listA[&1].Num",
                "list2" : {
                    "*": {
                        "amount" : "listA[&1].listB[&3].rate",
                        "code" : "listA[&1].listB[&3].covg_code"
                    }
                }
            }
        }
    }
  }

]

使用以下代码运行此规范

    List<Object> chainrSpecJSON = JsonUtils.filepathToList( "D:\\path\\to\\spec.json" );
    Chainr chainr = Chainr.fromSpec( chainrSpecJSON );

    List<Object> inputJSONList = JsonUtils.filepathToList( "D:\\path\\to\\input.json" );

    List<Object> outputList = new ArrayList<Object>();

    for(Object singleObj : inputJSONList){
        Object transformedOutput = chainr.transform( singleObj );
        outputList.add(transformedOutput);
    }
仲俊豪
2023-03-14

抱歉延迟重播,请使用以下规格

[
    { 
        "operation": "shift", 
        "spec": { 
            "list1": { 
                "*": {    
                    "id": "listA[&1].Num",    
                    "list2": {    
                        "*": {    
                            "code": "listA[&3].listB[&1].covg_code",    
                            "amount": {    
                                "formattedPrimeAmount": "listA[&4].listB[&2].rate.formattedPrimeAmount",    
                                "primeAmount": "listA[&4].listB[&2].rate.primeAmount"    
                             }    
                         }    
                     }    
                 }    
             }    
         }    
     }    
]    
 类似资料:
  • 我有json,其中包括多个产品,每个产品有多个不同的细节。使用jolt,我只需要输入json中的几个字段,遵循与输入json几乎相同的结构。我成功地迭代了产品,但是当我试图迭代每个产品变体时,我没有得到想要的输出。 输入. json 这里是Spec.json 我想要的预期输出。 我现在得到的实际输出。

  • 我只想扁平化嵌套JSON的属性,但仍然适用于输入数组中的所有对象 很难将这三个字段放在一个规范中(类型字段、geo字段、properties字段)。我编写了规范来单独完成每一个操作,但是当我将这些规范组合在一个对象中使用时,它会产生错误的输出--对象数组真的把它搞砸了。 期望输出:

  • 如何使用jolt转换将平面JSON转换为嵌套JSON?我对JSON和jolt是新手。 输入: 预期输出: 编辑:我想在< code>SubFunds中添加一个新字段,但是新字段不在JSON文件中,它是计算字段,我可以按原样添加示例吗 并重命名字段:

  • 我有一个JSON如下所示: 为什么在输出中看不到Level1、Level2?请有人帮忙,我想看看在输出和输入太相似了。

  • 我试图根据第二个嵌套数组中的值的数量将嵌套数组转换为对象。我似乎无法获取值字段的数量并将其用作规范中的键。现在这是我的输入JSON文件: 这是我想要的JSON输出: 这是我目前的规格 有人有类似的情况吗?

  • 我需要使用JOLT转换一个JSON。我是雷震改造的新手。以下是详细内容。我们正在尝试使用NiFi中的Jolt转换来转换jsons。 这是输入 这是我写的作业(更新感谢哈里克里希纳!) 我期待下面的输出。 我无法使循环工作。这是我从我写的作业中得到的输出。