2017-06-04 67 views
0

我使用GSON创建JSON文件,但数组没有名称。如何使用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" 
     } 
    ] 
    } 
} 

有人知道我怎样才能把命名的数组?

- EDIT

我正在使用此代码生成我的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); 

    } 
+0

你的输入和相关的源代码是什么? – mikep

+0

这是一个json数组。那些项目是什么类?你需要一个包装类来污染这个列表来产生它。 – Juan

+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); 

我还没有试过代码。我希望你明白这个主意。

+0

谢谢你的帮助! –

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); 
+0

非常感谢!它为我工作! –

相关问题