我有以下数据结构:
Class UserModel {
Long pkid;
String name;
public UserModel() {
this.pkid = new Long(1001);
this.name = "ABC";
}
}
现在我把它转换成了json:
UserModel usrObj = new UserModel();
Gson gson = new Gson();
String json = gson.toJson(userObj);
所以我的json字符串现在就像:
{ "pkid": 1001,
"name": "ABC" }
但我需要创建json为
{"com.vlee.ejb.UserModel": [
{ "pkid": 1001,
"name": "ABC" } ] }
我可以轻松创建一个类似的json:
{"userModel": [
{ "pkid": 1001,
"name": "ABC" } ] }
当我面临使用dot创建索引的问题时。
我不确定如何添加密钥"com.vlee.ejb.UserModel"
答案 0 :(得分:3)
UserModel userObj = new UserModel();
HashMap map = new HashMap();
ArrayList array = new ArrayList();
array.add(userObj);
map.put(userObj.getClass().getName(), array);
Gson gson = new Gson();
String json = gson.toJson(map);
System.out.println(json);
并输出: { “com.vlee.ejb.UserModel”:[{ “PKID”:1001, “姓名”: “ABC”}]}
答案 1 :(得分:0)
创建一个serializer类来自定义输出。这可能涉及创建和安排一些JsonElement子类实例。在这种情况下,您将使用JsonArray创建一个JsonObject作为其值之一,其中包含一个带有“pkid”和“name”内容的JsonObject。
假设您希望能够重新读取这些对象,同一个类也可以实现反序列化接口,在这种情况下,它将被赋予一个JsonElement实例,并且必须将它分开以构造所需的Java对象