如何为嵌套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
相关产品推荐
相关产品推荐

