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

Jackson序列化Tuple结构时的字段合并异常问题求助

问题:Jackson序列化手动创建的Activity对象时结构不符预期

原始JSON结构

"activityContainer" : {
   "activities": [
        [
            {
                "value": "483ab684-9854-4350-a5d0-a21b7d619c05"
            },
            {
                "type": "Activity",
                "uuid": "483ab684-9854-4350-a5d0-a21b7d619c05",
            }
        ]
    ]
}

自动生成的实体类

生成的ActivityContainer类:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"activities"
})
@Generated("jsonschema2pojo")
public class ActivityContainer{

  @JsonProperty("activities")
  private List<List<Activity>> activities = new ArrayList<List<Activity>>();
  @JsonIgnore
  private Map<String, Object> additionalProperties = new HashMap<String, Object>();

  // getters and setters
}

对应的Activity类:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"value",
"type",
"uuid"
})
@Generated("jsonschema2pojo")
public class Activity {

  @JsonProperty("value")
  private String value;
  @JsonProperty("type")
  private String type;
  @JsonProperty("uuid")
  private String uuid;
  @JsonIgnore
  private Map<String, Object> additionalProperties = new HashMap<String, Object>();

  // getters and setters
}

问题现象

  • 将原始JSON字符串反序列化为ActivityContainer对象后再序列化,输出结果与原始JSON一致,符合预期。
  • 手动创建Activity对象并填充所有字段,添加到ActivityContainer的列表中后,序列化输出结果如下:
"activityContainer" : {
  "activities": [
     [
        {
            "value": "483ab684-9854-4350-a5d0-a21b7d619c05",
            "type": "Activity",
            "uuid": "483ab684-9854-4350-a5d0-a21b7d619c05",
        }
     ]
  ]
}

原本拆分在两个对象中的字段被合并到了同一个对象里,与原始结构不符。

疑问

已知无法修改原始JSON结构,请问导致这一现象的原因是什么?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:50:24