如何使用GSON将名称放入JSON对象数组?

时间:2017-06-04 03:25:26

标签: java json gson

我正在使用GSON创建一个JSON文件,但这些数组没有名称。

我的结果:

[
      {
      "name": Jonh,
      "date": "Feb 16, 2066",
      "hour": "10:15:00 PM"
   },
      {
      "name": Maria,
      "date": "Feb 16, 2066",
      "hour": "10:15:00 PM"
   }
]

我需要什么:

{
  "users": {
    "user": [
      {
        "name": John,
        "date": "Feb 16, 2066",
        "hour": "10:15:00 PM"
      },
      {
        "name": Maria,
        "date": "Feb 16, 2066",
        "hour": "10:15:00 PM"
      }
    ]
  }
}

有人知道如何将名称命名为数组?

- 编辑

我正在使用此代码生成我的JSON文件。

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("user/list")
    public String getListUsers() throws Exception {

        List<Object> list;

        UserDAOImpl daoUser = new UserDAOImpl();
        list = daoUser.listAllUsers();

        Gson g = new Gson();
        return g.toJson(list);

    }

2 个答案:

答案 0 :(得分:0)

您需要的是一个新的对象,您必须在其中放置列表并将该对象转换为JSON。

Gson gson = new GsonBuilder().create();
JsonArray jsonArray = gson.toJsonTree(list).getAsJsonArray();
JsonObject userJsonObject = new JsonObject();
jsonObject.add("user", jsonArray);
JsonObject usersJsonObject = new JsonObject();
jsonObject.add("users", usersJsonObject);

我没有尝试过代码。我希望你明白这一点。

答案 1 :(得分:0)

试试这个。

Map<String, List<Object>> user = new TreeMap<>();
user.put("user", list);
Map<String, Map<String, List<Object>>> users = new TreeMap<>();
users.put("users", user);
Gson gson = new Gson();
return gson.toJson(users);