2017-06-04 56 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

非常感謝!它爲我工作! –

相關問題