fei*_*fei 22 java serialization json gson
我在使用Gson序列化对象时遇到问题.
@XmlRootElement
class Foo implements Serializable {
private int number;
private String str;
public Foo() {
number = 10;
str = "hello";
}
}
Run Code Online (Sandbox Code Playgroud)
Gson会将其序列化为JSON
{"number":10,"str":"hello"}
.
但是,我希望它是
{"Foo":{"number":10,"str":"hello"}}
,
所以基本上包括顶级元素.我试图谷歌一种方式在Gson做到这一点,但没有运气.任何人都知道是否有办法实现这一目标?
谢谢!
Nis*_*ant 20
您需要在对象树的顶部添加元素.像这样的东西:
Gson gson = new Gson();
JsonElement je = gson.toJsonTree(new Foo());
JsonObject jo = new JsonObject();
jo.add("Foo", je);
System.out.println(jo.toString());
// Prints {"Foo":{"number":10,"str":"hello"}}
Run Code Online (Sandbox Code Playgroud)
jor*_*own 15
您可以执行以下操作,而不是硬编码类型:
...
jo.add(Foo.getClass().getSimpleName(), je);
Run Code Online (Sandbox Code Playgroud)
更好的方法是创建一个包装类,然后在其中创建一个对象Foo
.
示例代码:
public class ResponseWrapper {
@SerializedName("Foo")
private Foo foo;
public Foo getFoo() {
return foo;
}
public void setFoo(Foo foo) {
this.foo= foo;
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用以下命令轻松解析为JSON:
new GsonBuilder().create().toJson(responseWrapperObj);
Run Code Online (Sandbox Code Playgroud)
这将为您提供所需的结构:
{"Foo":{"number":10,"str":"hello"}}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14965 次 |
最近记录: |