我正在更新我的Jolt规范,以生成正确的输出.我已经做了第一次try ,但不幸的是,为了获得好的结果,我的规范中缺少了一些东西.

这是我的json输入

{
  "id": 111,
  "uuid": "b4915b22-d8c0-47bd-832c-18c0",
  "testKey1[xxx]": "identifier_1234",
  "testKey2[yyyy]": "identifier_14",
  "name": "name1",
  "testValue1[xxx]": "10",
  "testValue2[yyy]": "12",
  "address": "S2271",
  "updateTime": "2024-01-18T10:35:00Z"
}

这是我的摇摆规格

[
  {
    "operation": "shift",
    "spec": {
      "uuid": "idBus",
      "id": "idTech",
      "name": "title",
      "address": "location",
      "updateTime": "lastUpdated",
      "testValue*": "myList&.value",
      "testKey*": "myList&.code"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "myList*": "myListOfFields[]"
    }
  }
]

实际上,我有这样的输出

{
  "idBus": "b4915b22-d8c0-47bd-832c-18c0",
  "idTech": 111,
  "title": "name1",
  "location": "S2271",
  "lastUpdated": "2024-01-18T10:35:00Z",
  "myListOfFields": [
    {
      "value": "identifier_1234"
    },
    {
      "value": "identifier_14"
    },
    {
      "code": "10"
    },
    {
      "code": "12"
    }
  ]
}

我想要的输出是

{
  "idBus": "b4915b22-d8c0-47bd-832c-18c0",
  "idTech": 111,
  "title": "name1",
  "location": "S2271",
  "lastUpdated": "2024-01-18T10:35:00Z",
  "myListOfFields": [
    {
      "code": "identifier_1234",
      "value": "10"
    },
    {
      "code": "identifier_14",
      "value": "12"
    }
  ]
}

为了达到预期的yields ,有没有遗漏的部分? 如有任何帮助,我们将不胜感激

谢谢.

推荐答案

您可以这样处理该问题:

[
  {
    "operation": "shift",
    "spec": {
      "uuid": "idBus",
      "id": "&Tech",
      "name": "title",
      "address": "location",
      "updateTime": "lastUpdated",
      "test*ue*\\[*": "mLOF&(0,2).value",
      "test*ey*\\[*": "mLOF&(0,2).code" // 2nd replacement from the current(0th) level 
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "mLOF*": "myListOfFields[]"
    }
  }
]

其中的诀窍是用100个标识符分隔开,以便获得103个表达式中的序号101102.

Edit:

您可以在末尾添加以下等级库,以便将100的格式转换为Double:

  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "myListOfFields": {
        "*": {
          "value": "=toDouble"
        }
      }
    }
  }

Java相关问答推荐

空手道比赛条件

只需最少的代码更改即可将版本号标记添加到日志(log)

Java中的死锁及其重入锁和锁

如何在Java中从XML中获取特定的 node ,然后将其删除?

第二次按下按钮后,我需要将按钮恢复到其原始状态,以便它可以再次工作

无法使用Java&;TestContainers获取AWS SQS队列的属性

Java-动态绑定-问题-了解

我可以在MacOS上使用什么Java函数来在适当的设备上以适当的音量播放适当的alert 声音?

Log4j与jdk21兼容吗?

使用Class.this.field=Value初始化构造函数中的最后一个字段会产生错误,而使用this.field=Value则不会

buildDir:File!&#的getter解决方案是什么?39.被抛弃

Java组件项目中的JavaFX对话框国际化

如何根据配置动态创建N个bean

在Oracle db中,当我们提供字符串而不是数字时,比较是如何工作的?

使用MediaPlayer类在一段时间后停止播放音乐

Java 17与Java 8双重表示法

验证没有';t work on Hibernate Entity';s字段

如何使用stream.allMatch()为空流返回false?

Spring Mapstruct如何获取Lazy初始化实体字段的信息?

使用DynamoDB增强客户端时未更新属性