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

Jolt转换JSON数组保留其余字段

左丘边浩
2023-03-14

如何在Jolt转换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"
  }
]

我使用了下面的Jolt转换,并尝试了通配符:

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

共有2个答案

仲和韵
2023-03-14

你可以考虑另一个图书馆乔森。

https://github.com/octomix/josson

反序列化

Josson josson = Josson.fromJsonString(
    "[" +
    "  {" +
    "    \"foundduring\": \"D-DC\"," +
    "    \"user_type\": \"type1\"," +
    "    \"location\": \"location1\"" +
    "  }," +
    "  {" +
    "    \"foundduring\": \"D-DG\"," +
    "    \"user_type\": \"type2\"," +
    "    \"location\": \"location2\"" +
    "  }," +
    "  {" +
    "    \"foundduring\": \"D-DI\"," +
    "    \"user_type\": \"type3\"," +
    "    \"location\": \"location3\"" +
    "  }" +
    "]");
    

转型

JsonNode node = josson.getNode(
    "field(foundduring.caseValue('D-DC','CycleCount','D-DG','Pick','D-DI','Issue'))");
System.out.println(node.toPrettyString());

输出

[ {
  "foundduring" : "CycleCount",
  "user_type" : "type1",
  "location" : "location1"
}, {
  "foundduring" : "Pick",
  "user_type" : "type2",
  "location" : "location2"
}, {
  "foundduring" : "Issue",
  "user_type" : "type3",
  "location" : "location3"
} ]
白念
2023-03-14

考虑使用“*”通配符而不是“@”,例如

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

顺便说一句,不需要获取密钥名称"发现期间",只需使用

http://jolt-demo.appspot.com/网站上的演示是

 类似资料:
  • 我必须将 JSON 输入转换为包含一个对象的数组。 我有这个 JOLT 配置: 以下是我的意见: 实际产量: 期望的输出: 你知道该怎么做吗? 谢谢你们的帮助

  • 我有json,其中包括多个产品,每个产品有多个不同的细节。使用jolt,我只需要输入json中的几个字段,遵循与输入json几乎相同的结构。我成功地迭代了产品,但是当我试图迭代每个产品变体时,我没有得到想要的输出。 输入. json 这里是Spec.json 我想要的预期输出。 我现在得到的实际输出。

  • 我想转换这个JSON: 对此JSON: 我目前正在使用该规范,但它不适合我: 有人能给出一个规范吗?有没有关于jolt JSON的明确文档 ................................................................................................................................

  • 编辑:键名称是动态的和未知的。 我想获取一个对象,并创建一个字符串数组,将每个键和值连接在一起。 我的键包含下划线,我需要摆脱(我有这部分工作)。我正在努力弄清楚下一步将所有内容连接在一起。(我想我错过了如何从RHS引用键和值?) 输入: 期望输出: 规格: 电流规格输出:

  • 我想转换我的嵌套json消息,并使用Jolt规范只获取必需的文件- 我的输入JSON: 低于我的规格输出,这不是预期的- 我尝试了很多选择,但国籍不是我预期的输出。请在这里帮助颠簸转换

  • 我有一个JSON,它包含两个数组,我需要将它们转换为键/值对。数组上的这些键是动态的,可以更改。 为此,我尝试创建一个Jolt规范,将我的输入数据转换为以下格式。 JSON输入: 期望输出: 我的规格: 我的规格输出: 但是我不能正确地在所需的输出中包含简单的属性(属性1和属性2)。 提前致谢