JSONファイルを読み込み、値を取り出していくつかの変更を行います。JSONArrayに書き込む
基本的には配列にいくつかの値を追加しました。その後、ファイルに書き戻したいと思います。私がJSONArray
をファイルに書き込むと、JSONArray
オブジェクトではなく文字列として書き込まれます。どうすればいいですか?私は、JSONファイルに書いて、次のコードで
:
JSONArray rooms = (JSONArray) jsonObject.get("rooms");
for (int i = 0; i < rooms.size(); i++) {
JSONObject room = (JSONObject) rooms.get(i);
String roomName = (String) room.get("roomName");
System.out.println("RoomName: " + roomName + " Size: " + "O: " + oldRoomListSize.get(roomName) + " N: " + roomList.get(roomName).getRoomBook().size());
if(oldRoomListSize.get(roomName) < roomList.get(roomName).getRoomBook().size()) {
int n = roomList.get(roomName).getRoomBook().size() - oldRoomListSize.get(roomName);
for (int j = n; j > 0; j--) {
int lenght = roomList.get(roomName).getRoomBook().size();
JSONArray schedule = (JSONArray) room.get("schedule");
Reservation r = roomList.get(roomName).getRoomBook().get(lenght-j);
schedule.add(r);
}
}
}
fileWriter.write(jsonObject.toJSONString());
fileWriter.close();
は、あなたが見ることができるように、文字列として書かれていると私は戻ってそれを読みたいとき、それは私の問題をもたらします。
"schedule":["{Day: 1 - Start Time: 10}"]
ファイルリーダー:
JSONArray schedule = (JSONArray) room.get("schedule");
for (int j = 0; j < schedule.size(); j++) {
JSONObject s = (JSONObject) schedule.get(j);
String day = (String) s.get("day");
String startTime = (String) s.get("startTime");
lRoom.setRoomBook(Integer.parseInt(day), Integer.parseInt(startTime));
}
Error: java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONObject
エラーが発生し、後(導入日と開始時刻)配列に新しい値を入力します。それは文字列として書かれています。また、それを再度読み込もうとすると、配列に文字列があるため、解析できないというエラーが表示されます。
入力ファイル:
{
"rooms":[
{"maxOccupants":"10",
"schedule":[{"startTime":"1","day":"10"},{"startTime":"20","day":"20"},{"startTime":"11","day":"122017"}],
"tv":"false",
"mobilePhone":"false",
"projector":"true",
"buildID":"1",
"floor":"2",
"roomName":"room1"},
{"maxOccupants":"4",
"schedule":[{"startTime":"10","day":"1"},{"startTime":"11","day":"122017"},{"startTime":"11","day":"15"}],
"tv":"false",
"mobilePhone":"false",
"projector":"false",
"buildID":"1",
"floor":"2",
"roomName":"room2"},
{"maxOccupants":"5",
"schedule":[{"startTime":"1","day":"10"},{"startTime":"11","day":"122017"}],
"tv":"false",
"mobilePhone":"false",
"projector":"true",
"buildID":"2",
"floor":"3",
"roomName":"room3"}
]
}
あなたは、入力ファイルの内容を提供してもらえますか?または少なくとも関連するスニペット –
また、 'Reservation'クラスのコード –
が完了しました。サポートありがとう。 –