我有这个实体
class Foo
{
public String FooName;
public String FooId;
}
我从方法中获取了一个Foo
数组,并将其序列化为json字符串,如下所示
Foo[] foos = getFoos();
String json = gson.toJson(foos, Foo[].class);
这会生成
[
{
"FooName" : "FirstFoo",
"FooId" : "1"
},
{
"FooName" : "SecondFoo",
"FooId" : "2"
}
]
这很好,除了我要求有一个像这样的包装属性
{
"foos":[
{
"FooName" : "FirstFoo",
"FooId" : "1"
},
{
"FooName" : "SecondFoo",
"FooId" : "2"
}
]
}
我知道我可以创建一个包装类
class Foos
{
Foo[] foos;
}
并使用带有gson的Foos.class,但是我有100个像Foo
这样的类,我不想为每个类创建一个包装类。我还在考虑对原来的json做一些字符串操作,返回添加包装器attribut,但我保留了计划B(甚至是C)。
所以,我想知道在gson中是否有办法添加一个包装器属性,就像我上面提到的那样。
感谢。
答案 0 :(得分:2)
这是一种手动方式:
final Gson gson = new Gson();
final Foo[] foos = new Foo[] {};
final JsonElement elem = gson.toJsonTree(foos);
final JsonObject jsonObj = new JsonObject();
jsonObj.add("foo", elem);
System.out.println(jsonObj.toString());
答案 1 :(得分:1)
JsonObject obj = new JsonObject();
obj.add("foos", gson.toJsonTree(foos, Foo[].class));
String json = obj.toString();