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并忽略
    数据
    层的代码。我不能改变班级结构


如果事实上,数据属于复杂类而不是映射,那么JsonUnwrapped应该可以工作。如果它不是地图,你就不应该说它是地图。@JBNizet-这似乎是个好答案!
{ inner: { a : 1, b: 2 } }