У меня есть класс ConfigInstance
, который содержит password
и a password_hash
.
Теперь я хочу сериализовать объект с помощью gson, но исключить поле password
.
public class ConfigInstance {
public String database_address;
public int database_port;
public String database_user;
@Expose(serialize = false)
private String database_pass;
public String database_pass_hash;
public String GetPass() { return database_pass; }
public void Encrypt() { /* Creates the hash before serializing*/ }
public void Decrypt() { /* Creates the password after deserializing */}
}
Как вы можете видеть, я попытался использовать @Expose(serialize = false)
, но он ничего не делает. Также я уже установил поле в приватное, так как понял, что это "переопределит" @Expose
но выполняется следующий код:
private void toFile(File file, ConfigInstance map) {
map.Encrypt();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonConfig = gson.toJson(map);
FileWriter writer;
try {
writer = new FileWriter(file);
writer.write(jsonConfig);
writer.flush();
writer.close();
} catch (IOException e) {
System.out.println("Error exporting config: " + e.toString());
}
}
все еще приводит к следующему содержимому файла без ошибок:
{
"database_address": "127.0.0.1",
"database_port": 1521,
"database_user": "test",
"database_pass": "test1234",
"database_pass_hash": "B9FE2C011B59F0D0D383D70073E48A19"
}
Так что я делаю неправильно? Я довольно невнятный прямо сейчас и буду признателен за любую помощь, поскольку ЭТО, похоже, не работает.
Спасибо заранее.