我有JSON文件,我需要閱讀,編輯並再次寫出。如何在Java中將JSONObject寫入其中包含JSONArray的文件中?
閱讀工作正常,我在數據中與JSON數組的寫入部分鬥爭。
我使用JSON.simple庫在Java中使用JSON。
文件看起來像這樣:
{
"maxUsers":100,
"maxTextLength":2000,
"maxFileSize":2000,
"services":
[
{
"serviceName":"Яндекc",
"className":"YandexConnector.class",
"isEnabled":true
},
{
"serviceName":"Google",
"className":"GoogleConnector.class",
"isEnabled":false
}
]
}
當我嘗試寫JSON數據(可變obj
)到文件中,services
陣列被打破了。我寫代碼:
JSONObject obj = new JSONObject();
obj.put("maxUsers", this.getMaxUsers());
obj.put("maxTextLength", this.getMaxTextLength());
obj.put("maxFileSize", this.getMaxFileSize());
JSONArray servicesJSON = new JSONArray();
ArrayList<Service> servicesArray = this.getServices();
for(int i=0; i< servicesArray.size(); i++)
{
servicesJSON.add(servicesArray.get(i));
}
obj.put("services", servicesJSON);
FileWriter file = new FileWriter(filename);
obj.writeJSONString(file);
file.flush();
file.close();
此輸出:
{
"services":
[
[email protected],
[email protected]
],
"maxTextLength":2000,
"maxUsers":100,
"maxFileSize":2000
}
我怎樣才能正確地寫入JSON數據到一個文件,如果我有它在一個JSONArray像services
?
的代碼,在那裏我從文件中讀取JSON數據(即正常工作):
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader(filename));
JSONObject jsonObject = (JSONObject) obj;
setMaxUsers((Long) jsonObject.get("maxUsers"));
setMaxTextLength((Long) jsonObject.get("maxTextLength"));
setMaxFileSize((Long) jsonObject.get("maxFileSize"));
// get all list of services
JSONArray serv = (JSONArray) jsonObject.get("services");
for (int i = 0; i < serv.size(); i++) {
JSONObject service = (JSONObject) serv.get(i);
Service servec = new Service();
servec.setServiceName((String) service.get("serviceName"));
servec.setClassName((String) service.get("className"));
servec.setIsEnabled((Boolean) service.get("isEnabled"));
services.add(i, servec);
}
編輯部分還沒寫,所以我就直接閱讀後調用寫作部分。
編輯部分肯定存在問題,您不會顯示。您將Service類的實例存儲在JSON數組中,而不是存儲JSONObject實例。 –
向我們展示如何創建JSON數據'obj'。 –
@SotiriosDelimanolis,我添加了一部分代碼。你可以看看嗎? –