java - 数组输入的 Jolt 变换 JSON 规范

标签 java jolt

我正在尝试使用以下规范进行 JOLT 换档操作,但该操作不起作用。不确定我犯了什么错误。在这种情况下需要帮助。输出 JSON 作为对象而不是数组出现,并且移位也无法按预期工作。

    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"
      } ]
    }

最佳答案

您还必须指定“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测试规范

关于java - 数组输入的 Jolt 变换 JSON 规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63610203/

相关文章:

json - Jolt 将对象列表转换为数组

elasticsearch - 颠簸递归变换如何展平

json - 重新排列 JOLT 中的值

java - 更新 Lucene 索引中的文档时如何避免 OutOfMemoryErrors?

java - 如何通过java程序通过代理连接网站

java - 如何使用 Spring WebClient 反序列化通用响应

json - JOLT 转换将元素添加到数组

java - 将此用作 addfocuslistener 方法的参数

java - PostgreSQL 列中映射的 Java LocalDate/LocalDateTime 字段的问题

jolt - 如何使用 Jolt 更改大型 Json 中的一个字段的名称