You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java JOLT中输出@class作为键?Jackson映射需求

解决JOLT中输出带@class键的JSON问题

我之前刚踩过JOLT处理@符号的坑,刚好能帮你解决这个问题!

你遇到的核心问题是:JOLT里@是特殊符号,默认会被解析为通配符或节点引用,没法直接作为普通字符串键输出。而Jackson需要@class这个明确的键来指定Java类,所以得让JOLT把@class当成普通字符串处理。

正确的JOLT配置写法

你的配置思路已经很接近了,只需要把目标键@class用单引号包裹,告诉JOLT这是一个普通字符串,而不是特殊符号。修改后的配置如下:

{
  "locations": {
    "*": {
      "#location": "tempLocations[&1].riskItemType",
      "#com.object.beans.element.Location": "tempLocations[&1]['@class']"
    }
  }
}

为什么这样生效?

JOLT的语法规则里,以@开头的标识符会被当作特殊符号处理(比如@代表当前节点,@(key)代表引用其他键的值)。用单引号把@class括起来后,JOLT就会将其视为普通的字符串键名,不再解析@的特殊含义。

示例验证

假设你的输入JSON是:

{
  "locations": [
    { "id": "loc1" },
    { "id": "loc2" }
  ]
}

经过上述JOLT转换后,输出的JSON会是:

{
  "tempLocations": [
    {
      "riskItemType": "location",
      "@class": "com.object.beans.element.Location"
    },
    {
      "riskItemType": "location",
      "@class": "com.object.beans.element.Location"
    }
  ]
}

这样生成的@class键就能被Jackson正确识别,自动将对应的节点映射到com.object.beans.element.Location类。

内容的提问来源于stack exchange,提问作者SuperWes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:39:04