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

如何为嵌套JSON中的动态键创建嵌套Java POJO类?

处理嵌套JSON动态键的Java POJO实现方案

针对JSON中parents、childs、fills这类包含动态键的嵌套对象,核心解决思路是用Map<String, 固定结构POJO>来映射这类动态结构——因为动态键对应的value是固定格式的对象,正好匹配Map的键值对特性。

完整POJO实现

1. 顶层配置类 UserConfig

public class UserConfig {
    private String Id;
    private String userId;
    private String timezone;
    private Map<String, ColumnConfig> parents;
    private Map<String, ColumnConfig> childs;
    private Map<String, ColumnConfig> fills;

    // Getter和Setter方法(建议添加,或使用Lombok简化)
    public String getId() { return Id; }
    public void setId(String id) { Id = id; }
    public String getUserId() { return userId; }
    public void setUserId(String userId) { this.userId = userId; }
    public String getTimezone() { return timezone; }
    public void setTimezone(String timezone) { this.timezone = timezone; }
    public Map<String, ColumnConfig> getParents() { return parents; }
    public void setParents(Map<String, ColumnConfig> parents) { this.parents = parents; }
    public Map<String, ColumnConfig> getChilds() { return childs; }
    public void setChilds(Map<String, ColumnConfig> childs) { this.childs = childs; }
    public Map<String, ColumnConfig> getFills() { return fills; }
    public void setFills(Map<String, ColumnConfig> fills) { this.fills = fills; }
}

2. 嵌套对象类 ColumnConfig

注意修正原代码中的拼写错误:aggregateTyep改为aggregateType

public class ColumnConfig {
    private String displayName;
    private String dataType;
    private String aggregateType;
    private boolean isFrozen;
    private boolean isDisplayed;
    private boolean isJsonColumn;
    private int rank;

    // Getter和Setter方法
    public String getDisplayName() { return displayName; }
    public void setDisplayName(String displayName) { this.displayName = displayName; }
    public String getDataType() { return dataType; }
    public void setDataType(String dataType) { this.dataType = dataType; }
    public String getAggregateType() { return aggregateType; }
    public void setAggregateType(String aggregateType) { this.aggregateType = aggregateType; }
    public boolean isFrozen() { return isFrozen; }
    public void setFrozen(boolean frozen) { isFrozen = frozen; }
    public boolean isDisplayed() { return isDisplayed; }
    public void setDisplayed(boolean displayed) { isDisplayed = displayed; }
    public boolean isJsonColumn() { return isJsonColumn; }
    public void setJsonColumn(boolean jsonColumn) { isJsonColumn = jsonColumn; }
    public int getRank() { return rank; }
    public void setRank(int rank) { this.rank = rank; }
}

说明

使用Jackson、Gson等主流JSON序列化/反序列化库时,这种结构可以直接完成JSON与POJO的相互转换:

  • 动态键(如parents下的symbol、date)会自动作为Map的key
  • 每个动态键对应的固定结构对象会被解析为ColumnConfig实例

内容的提问来源于stack exchange,提问作者Kona Laxman Deepak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:47:44