Java 如何将类的Jackson编码折叠为一个实例变量的编码?
我有一组类,其中一个类有另一个类的实例变量Java 如何将类的Jackson编码折叠为一个实例变量的编码?,java,json,encoding,jackson,Java,Json,Encoding,Jackson,我有一组类,其中一个类有另一个类的实例变量 public class Outer { public Inner inner; } public class Inner { public HashMap data; } 我使用Jackson将此数据结构编码为JSON,默认情况下,获得以下编码: { inner: { data: { a : 1, b: 2 } } } // a:1,b:2 is contents of data HashMap 我需要做的[1]是跳过JSON映射
public class Outer {
public Inner inner;
}
public class Inner {
public HashMap data;
}
我使用Jackson将此数据结构编码为JSON,默认情况下,获得以下编码:
{ inner: { data: { a : 1, b: 2 } } } // a:1,b:2 is contents of data HashMap
我需要做的[1]是跳过JSON映射中的“data”
层-本质上,用它的一个实例变量(HashMap数据)的编码替换内部类的编码:
最简单的方法是什么
我假设这将涉及内部类的定制Jackson编码器,但不确定这是否是最简单和最好的方法,如果是,如何有效地编写它
注:
- 需要明确的是,内部类保证只有一个可编码的成员(
)。还有其他公共成员,但它们有data
注释以避免对它们进行编码@JsonIgnore
- 解决方案不应该涉及为HashMap本身编写手工构建的编码代码。为了简单起见,我只使用了HashMap;实际上,
是一个复杂的类,手工编写的编码器既不可行,也不可取数据
- 只有JSON编码才重要。不需要匹配的解码器
- [1] 为了避免回答/评论的X-Y问题类型,要求只做我概述的事情。我无法更改在另一端读取JSON并忽略
层的代码。我不能改变班级结构数据
{ inner: { a : 1, b: 2 } }