如何在Jolt transform JSON数组中保留其他字段,我试图使用通配符,但字段没有添加到最终输出中?

下面是我使用的输入示例

[
  {
    "foundduring": "D-DC",
    "user_type": "type1",
    "location": "location1"
  },
  {
    "foundduring": "D-DG",
    "user_type": "type2",
    "location": "location2"
  },
  {
    "foundduring": "D-DI",
    "user_type": "type3",
    "location": "location3"
  }
]

我正在使用以下震动转换,并try 使用通配符:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "foundduring": {
          "D-DC": {
            "#CycleCount": "[&3].foundduring"
          },
          "D-DG": {
            "#Pick": "[&3].foundduring"
          },
          "D-DI": {
            "#Issue": "[&3].foundduring"
          }
        },
        "@": "&"
      }
    }
  }
]

下面是我的预期输出,其中发生了移位操作,然后需要保持所有其他字段不变

[
  {
    "foundduring" : "CycleCount",
    "user_type" : "type1",
    "location" : "location1"
  },
   {
    "foundduring" : "Pick",
    "user_type" : "type2",
    "location" : "location2"
  },
   {
    "foundduring" : "Issue",
    "user_type" : "type3",
    "location" : "location3"
  }
]

实际输出:

[
  {
    "foundduring": "CycleCount"
  },
  {
    "foundduring": "Pick"
  },
  {
    "foundduring": "Issue"
  }
]

推荐答案

考虑使用100通配符作为else case,而不是101,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "foundduring": {
          "D-DC": {
            "#CycleCount": "[&3].&2"
          },
          "D-DG": {
            "#Pick": "[&3].&2"
          },
          "D-DI": {
            "#Issue": "[&3].&2"
          }
        },
        "*": "[&1].&"
      }
    }
  }
]

顺便说一句,不需要获得键名100,只需使用&2替换,从当前分支向上移动2级,并获取该值.

网站http://jolt-demo.appspot.com/上的101

enter image description here

Java相关问答推荐

如何使用解析器组合子解析Java数组类型签名?

使用Java Streams API比较两个不同的Java集合对象和一个公共属性

CAMEL 4中的SAXParseException

根据对象和值的参数将映射<;T、值&>转换为列表<;T&>

Java Swing:初始化身份验证类后未检测到ATM_Interface键事件

使用Testcontainers与OpenLiberty Server进行集成测试会抛出SocketException

呈现文本和四舍五入矩形时出现的JavaFX窗格白色瑕疵

当返回Mono<;Something>;时,不会调用Mono<;void>;.flatMap

为什么Spring Boot项目无法为基于MySQL的CRUD应用程序找到从JPARepository接口扩展的ProductRepository?

使用Jackson库反序列化json

在settings.gradle.kts和Build.gradle.kts中使用公共变量

如何在盒子的顶部和底部创建两张不同图片(大小相同)的盒子?

如何生成指定范围内的11位序列号?

有没有办法知道在合并中执行了什么操作?

有没有办法在o(log(N))中以系统的方式将数组中的小块元素复制和移动到新增长的数组中的左侧?

如何在右击时 Select 新行?

根据应用程序 Select 的语言检索数据

让标签占用JavaFX中HBox的所有可用空间

Springboot应用程序无法识别任何@RestController或@Service,我认为@Repository也无法识别

Vaadin Flow:设置密码显示按钮属性