Java Gson Exclure des domaines au cours de la sérialisation

J'ai un ConfigInstance classe qui contient une password et un password_hash.
Maintenant, je veux sérialiser l'objet à l'aide de gson, mais exclure le password champ.

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 */}
}

Comme vous pouvez le voir, j'ai essayé d'utiliser @Expose(serialize = false) mais il ne semble pas faire quoi que ce soit. Aussi je l'ai déjà réglé le domaine privé puisque je me suis dit que ce serait de "remplacer" le @Expose

mais l'exécution de code suivant:

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());
    }
}

encore les résultats dans le fichier de contenu sans Erreurs:

{
  "database_address": "127.0.0.1",
  "database_port": 1521,
  "database_user": "test",
  "database_pass": "test1234",
  "database_pass_hash": "B9FE2C011B59F0D0D383D70073E48A19"
}

Donc ce que je fais mal? Je suis assez paumé dès maintenant et vous serais reconnaissant de toute aide depuis CETTE ne semble pas fonctionner.

Merci d'avance.

Si vous devez modifier les accès à la classe de l'objet à sérialiser, vous pouvez utiliser l'annotation 'Exposés' tel que mentionné par @bosco. Si vous n'avez pas de modifier l'accès, qui est, si elle est dans une lib externe, vous pouvez utiliser d'autres approches, comme celles énumérées ici baeldung.com/gson-exclude-fields-serialization

OriginalL'auteur ThexBasic | 2016-12-01