【问题标题】:Jolt Transform JSON Spec for Array Input用于数组输入的 Jolt 转换 JSON 规范
【发布时间】:2020-08-27 06:15:49
【问题描述】:

我正在尝试使用以下规格进行 JOLT 换档操作,但无法正常工作。不知道我犯了什么错误。在这种情况下需要帮助。输出 JSON 以对象而不是 Array 的形式出现,并且 shift 也无法按预期工作。

    Input : [
      {
        "Header": {
          "Number": 1,
          "Id": "JO"
        },
        "Name": "John"
      },
      {
        "Header": {
          "Number": 2,
          "Id": "JS"
        },
        "Name": "Justin"
      }
    ]
    Spec : [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "Header": "Header",
            "Name": "Header.Name"
          }
        }
      }
    ]
    Expected Output : [
      {
        "Header": {
          "Number": 1,
          "Id": "JO",
          "Name": "John"
        }    
      },
      {
        "Header": {
          "Number": 2,
          "Id": "JS",
          "Name": "Justin"
        }    
      }
    ]
    Actual Output : {
      "Header" : [ {
        "Number" : 1,
        "Id" : "JO",
        "Name" : "John"
      }, {
        "Number" : 2,
        "Id" : "JS"
      } ]
    }

【问题讨论】:

    标签: java jolt


    【解决方案1】:

    您还必须指定"Header" 对象为inside the array

    此外,为数组的每个元素放置 "Header" 对象的数组索引。

    这就是下面的规范所做的(使用[&1] - apmersand wildcard 结合数组):

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "Header": "[&1].Header",
            "Name": "[&1].Header.Name"
          }
        }
      }
    ]
    

    来源:

    1. Shiftr.java javadocs:
    2. 其他答案:"How do I transform an array using Jolt?"
    3. Demo application 链接到 the jolt repo 以测试规范

    【讨论】:

    • 谢谢,@kasptom。它正在工作。到目前为止,您在 3 个与 JOLT 相关的问题上帮助了我。
    • 有什么好的资源来阅读 jolt 的文档吗?直到现在这都非常模糊......#
    • @ΦXocę웃Пepeúpaツ 我已经编辑了答案并添加了我所知道的最佳来源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多