1
la sortie des éléments suivants:HashMap toJson est vide avec JSON
private static class Target extends HashMap<String, String> {
}
public static void main(String[] args) {
final Moshi build = new Moshi.Builder().build();
final JsonAdapter<Target> adapter = build.adapter(Target.class);
final Target value = new Target();
value.put("foo", "bar");
System.out.println(adapter.toJson(value));
}
est {}
- j'attendre {"foo":"bar"}
- comment puis-je obtenir le résultat attendu?
Side Remarque sans lien: être prudent lorsque héritant des classes telles que HashMap. Il est préférable d'implémenter l'interface Map et de conserver une référence à un HashMap dans la classe, en transmettant les méthodes put, get ... à HashMap. La raison en est que vous êtes lié à des détails de mise en œuvre qui ne sont pas bons et pourraient casser la compatibilité lors du passage d'une version de Java à une autre. D'Effective Java, 2e édition, article 16: 'Contrairement à l'invocation de méthode, l'héritage viole l'encapsulation' ... Je vous encourage fortement à en lire plus à ce sujet! Cela dit, il suffit d'utiliser l'interface dans JsonAdapter –