Gson 序列化 POJO 并包含根值?
我在使用 Gson 序列化对象时遇到问题。
@XmlRootElement
class Foo implements Serializable {
private int number;
private String str;
public Foo() {
number = 10;
str = "hello";
}
}
Gson 会将其序列化为 JSON
{"number":10,"str":"hello"}
。
但是,我希望它是
{"Foo":{"number":10,"str":"hello"}}
,
所以基本上包括顶级元素。我尝试在 Gson 中搜索一种方法,但没有成功。有人知道是否有办法实现这一目标?
谢谢!
I'm having a problem serializing an object using Gson.
@XmlRootElement
class Foo implements Serializable {
private int number;
private String str;
public Foo() {
number = 10;
str = "hello";
}
}
Gson will serialize this into a JSON
{"number":10,"str":"hello"}
.
However, I want it to be
{"Foo":{"number":10,"str":"hello"}}
,
so basically including the top level element. I tried to google a way to do this in Gson, but no luck. Anyone knows if there is a way to achieve this?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您需要将元素添加到对象树的顶部。像这样的事情:
You need to add the element at the top of the the object tree. Something like this:
您可以执行以下操作,而不是对类型进行硬编码:
Instead of hardcoding the type you can do:
更好的方法是创建一个包装类,然后在其中创建一个 Foo 对象。
示例代码:
然后您可以使用以下方法轻松解析为 JSON:
这将为您提供所需的结构:
A better way to do this is to create a wrapper class and then create an object of
Foo
inside it.Sample code:
Then you can easily parse to JSON using:
which will give you the desired structure:
如果您使用 Jackson api,请使用以下行
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
If you are using Jackson api use the below lines
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);