1

我有以下数据结构:

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" } ] }

当我遇到使用点创建索引的问题时。

我不确定如何添加密钥"com.vlee.ejb.UserModel"

4

2 回答 2

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,"name":"ABC"}]}

于 2013-04-03T02:19:12.600 回答
0

创建一个序列化器类来自定义输出。这可能涉及创建和安排一些JsonElement子类实例。在这种情况下,您将创建一个 JsonObject,并将 JsonArray 作为其值之一,该 JsonObject 又包含一个 JsonObject,其中包含“pkid”和“name”内容。

假设您希望能够重新读取这些对象,则同一个类也可以实现反序列化接口,在这种情况下,它将被赋予一个 JsonElement 实例,并且必须将其分离以构造所需的 Java 对象。

于 2013-04-03T02:12:56.823 回答