Впервые работаю с Json. Использую Gson(Google). Я реализовал интерфейсы для сериализации и десериализации по этому гайду и сделал преобразование нужного мне объекта в json формат. Если сохранять каждый по отдельности, то получается вот так -> http://joxi.ru/nAy8G71uYBzQO2. Вот класс:
public class JsonConfigManager implements JsonSerializer<MatcherManager.Matcher>, JsonDeserializer<MatcherManager.Matcher> {
private final Functional functional;
private Gson gson;
public JsonConfigManager(Functional functional) {
this.functional = functional;
}
public void init() {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(MatcherManager.Matcher.class, this);
builder.setPrettyPrinting();
builder.setVersion(1.0D);
this.gson = builder.create();
}
private void saveDefaultConfig() {
try {
if (this.configFile.createNewFile()) {
try (Writer writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(configFile), "UTF-8"))) {
for (MatcherManager.Matcher matcher : functional.getMatcherManager().getMatchers()) { // getMatchers -> HashSet<>
this.gson.toJson(matcher, MatcherManager.Matcher.class, writer);
}
}
}
} catch (IOException ex) {
functional.getController().showExceptionDialog(ex);
}
}
@Override
public JsonElement serialize(MatcherManager.Matcher matcher, Type typeOfSrc, JsonSerializationContext context) {
JsonObject object = new JsonObject();
object.addProperty("name", matcher.getName());
String pattern = matcher.getPattern().pattern().replace(".*(", "").replace(").*", "");
object.addProperty("pattern", pattern);
object.addProperty("enable", matcher.isEnable());
object.addProperty("notifyPM", matcher.isNotifyPrivateMessages());
return object;
}
@Override
public MatcherManager.Matcher deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject object = json.getAsJsonObject();
String name = object.get("name").getAsString();
String pattern = object.get("pattern").getAsString();
MatcherManager.Matcher matcher = new MatcherManager.Matcher(name, pattern);
matcher.setEnable(object.get("enable").getAsBoolean());
matcher.setNotifyPrivateMessages(object.get("notifyPM").getAsBoolean());
return matcher;
}
}
Мне нужно, чтобы данные из него сохранились примерное в таком формате -> http://joxi.ru/E2pgylZs9qNXxm, не получается это сделать. Как правильно это сделать? И как потом это правильно прочитать?
Нужного формата сохранения я добился так:
this.gson.toJson(functional.getMatcherManager().getMatchers(), HashSet.class, writer);
А правильно прочитал из файла так:
Type type = new TypeToken<HashSet<MatcherManager.Matcher>>() {}.getType();
HashSet<MatcherManager.Matcher> set = this.gson.fromJson(reader, type);
Слава документации!
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
на первой строке конструктора получаю Null , с сообщением о том, что невозможно создать экземпляр классаЯ так полагаю, что в момент отработки...
Ситуация следующая: Для логирования использую log4j2 в связке с slf4jПроект деплою на tomcat8
В гугла есть апи для работы с переводчиком (https://translategoogle
У меня есть настройки в виде txt файла, этот txt файл будет находится в jar архиве