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

用JOLT制作复杂数组输出

凌炜
2023-03-14

我正在尝试将json转换为复杂数组。INVLOC的内部数组没有按照我想要的方式生成。

我的输入json是:

    {
  "valid": "true",
  "message": "",
  "data": {
    "ARINVT01": [
      {
        "firstName": "andrew",
        "lastname": "Gilly",
        "INVLOC": {
          "data": [
            {
              "mmm": "MAIN",
              "nnn": "0.000"
            },
            {
              "mmm": "A1",
              "nnn": "0.000"
            }
          ]
        }
      },
      {
        "firstName": "Jack",
        "lastname": "watson",
        "INVLOC": {
          "data": [
            {
              "mmm": "MAIN",
              "nnn": "0.000"
            }
          ]
        }
      }
    ]
  }
}
    [
  {
    "FNAME": "andrew",
    "LNAME": "Gilly",
    "INVBALANCES": [
      {
        "user": "MAIN",
        "CURBAL": "0.000"
      },
      {
        "user": "A1",
        "CURBAL": "0.000"
      }
    ]
  },
  {
    "FNAME": "Jack",
    "LNAME": "watson",
    "INVBALANCES": [
      {
        "user": "A1",
        "CURBAL": "0.000"
      }
    ]
  }
]
  [
  {
    "operation": "shift",
    "spec": {
      "data": {
        "ARINVT01": {
          "*": {
            "firstName": "[&1].FNAME",
            "lastname": "[&1].LNAME",
            "INVLOC": {
              "data": {
                "*": {
                  "mmm": "[&1].INVBALANCES.[#1].user",
                  "nnn": "[&1].INVBALANCES.[#1].CURBAL"
                }
              }
            }
          }
        }
      }
    }
  }

]
    [ {
  "FNAME" : "andrew",
  "LNAME" : "Gilly",
  "INVBALANCES" : [ {
    "user" : "MAIN"
  }, {
    "CURBAL" : "0.000"
  } ]
}, {
  "INVBALANCES" : [ {
    "user" : "A1"
  }, {
    "CURBAL" : "0.000"
  } ],
  "FNAME" : "Jack",
  "LNAME" : "watson"
} ]

如果我能得到一些教程来理解Jolt的数组转换。

共有1个答案

滕星纬
2023-03-14

规格

 [
   {
     "operation": "shift",
     "spec": {
       "data": {
         "ARINVT01": {
           "*": { // array index of ARINVT01
             // 
             //             &0 is "firstName"
             //             &1 is the current array index of ARINVT01
             "firstName": "[&1].FNAME",
             "lastname":  "[&1].LNAME",
             "INVLOC": {
               "data": {
                 "*": { // array index of data array
                   //
                   //       &0 is "mmm"
                   //       &1 is the current array index of the data array
                   //       &2 is "data"
                   //       &3 is "INVLOC"
                   //       &4 is the current array index of ARINVT01
                   //  basically the "&" "number" logic is 
                   //   how many levels to walk back up the document
                   //   to lookup the currently matched value
                   "mmm": "[&4].INVBALANCES.[&1].user",
                   "nnn": "[&4].INVBALANCES.[&1].CURBAL"
                 }
               }
             }
           }
         }
       }
     }
  }
]
 类似资料:
  • 当调用外部API时,我收到了一个复杂的json结构,我需要根据我们的需要将其转换为简单的json。我发现jolt具有转换json的能力,但无法提出jolt规范。 我的输入Json数组—— 我的输出 Json 结构应该看起来像 - 我尝试了多种jolt规格,但无法得到想要的输出。这种情况下最理想的jolt规格应该是什么?

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

  • 我对震动有点陌生,一直在努力进行正确的转变。任何帮助都很感激。这是我的输入数据: 我的目标是创建一个包含所有条目的数组。对于本例,将有2个条目(长度与)相同。数组(键)和(值)是1:1映射的,即它们应该具有相同的长度。 这是预期的输出:

  • 我有一个复杂的Json,我想使用Jolt或任何其他方式在Nifi中展平Json。也可以。任何人都可以帮助展平下面的Json吗 以上是我的Json,我需要将其扁平化为简单的Json,以便我可以在Hive中处理它。我曾尝试使用flatten Json处理器,但它不起作用,所以现在我正在尝试使用jolt规范。请任何人使用jolt转换或在Nifi中指导我解决上述问题。 我的预期输出如下 我已经更新了请求

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

  • 我正在努力使用 JOLT 转换复杂的 json。 输入JSON: 预期输出: 我无法理解如何在基于“字段名称”的输出中访问和分配“字段值”。请帮我做一下震动测试。 注意:输入JSON中的名称、标题和公司的顺序将是混乱和随机的,这意味着在“data”数组下,第一个对象仅与“Name”相关不是强制性的。