I have a ConfigInstance
class which contains a password
and a password_hash
.
Now I want to serialize the object using gson but exclude the password
field.
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 */}
}
As you can see, I have tried using @Expose(serialize = false)
but it doesn't seem to do anything. Also I already set the field to private since I figured that this would "override" the @Expose
but running following code:
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());
}
}
still results in the following file content without Errors:
{
"database_address": "127.0.0.1",
"database_port": 1521,
"database_user": "test",
"database_pass": "test1234",
"database_pass_hash": "B9FE2C011B59F0D0D383D70073E48A19"
}
So what am I doing wrong? I am pretty clueless right now and would appreciate any help since THIS doesn't seem to work.
Thanks in advance.