Запись и чтение JSON ( через GSON )
Всем привет, пытался сделать запись и чтение JSON,однако не вышло ( корректно уж точно );
Как я записываю:
/// Это выполним после загрузки и установки
ModModelClass MMC = new ModModelClass(id, name, category, filesize, null);
try (FileWriter writer = new FileWriter(Environment.getExternalStorageDirectory() + "/Android/data/" + getPackageName() + "/mods_installed_db.json", true)) {
writer.write(gson.toJson(MMC) + "\n");
writer.flush();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
P.S Код выше так же производит неверную запись, дело в том, что после добавления 2-ой строки и далее, структура становится невалидной.
Хотелось бы при записи записывать не просто строку JSON-а, а подобную структуру:
{
"id": 1,
"title": "Текст",
"author": "Автор",
"downloadlink": "Ссылка",
"status": 1,
"previewimgurl": "Ссылка",
"rating": 0,
"workshoplink": "Ссылка",
"description": "Текст",
"mindescript": "Мин деск",
"modsize": 60.1
},
Как я пытался искать и читать ( по сути тут, я хотел просканировать весь JSON для сверки id из его строки, с переменной id из моего кода, если id совпадают, значит ресурс устаовлен, если нет, то наоборот, но получилось весьма топорно (( и ниего увы не заработало )))
Gson g = new Gson();
FileReader x = null;
try {
x = new FileReader(Environment.getExternalStorageDirectory() + "/Android/data/" + getPackageName() + "/mods_installed_db.json");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedReader varRead = new BufferedReader(x);
JSONParserModel jsm = g.fromJson(varRead, JSONParserModel.class);
String jsid = jsm.id;
if(jsid == id) {
StatInfiusBool = true;
statusinfo = "Установлен";
}
else{
StatInfiusBool = false;
statusinfo = "Не установлен";
}
Ответы (1 шт):
Если я правильно понял, вы пытаетесь добиться, что Json был читабельным, а не слитной строкой по умолчанию. На то существует способ pretty print:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
writer.write(gson.toJson(MMC));
writer.flush();