Non capisco perché l'ultima riga di questo codice restituisca una stringa vuota.javax.json strano comportamento
Map<String, JsonObjectBuilder> HASH_MAP = new HashMap<>();
JsonObjectBuilder one = Json.createObjectBuilder();
one.add("test1","test1");
HASH_MAP.put("one", one);
JsonObjectBuilder two = Json.createObjectBuilder();
two.add("test2","test2");
HASH_MAP.put("two", two);
JsonObjectBuilder toReturn = Json.createObjectBuilder();
JsonArrayBuilder l1 = Json.createArrayBuilder();
for (Map.Entry<String, JsonObjectBuilder> l : HASH_MAP.entrySet()) {
l1.add(l.getValue());
}
toReturn.add("l1", l1);
toReturn.add("otherParam", "value2");
String strJSON = toReturn.build().toString();
System.out.println("JSON1: " + strJSON);
System.out.println("JSON2: " + HASH_MAP.get("one").build().toString());
Questa è l'uscita:
Info: JSON1: {"l1":[{"test1":"test1"},{"test2":"test2"}],"otherParam":"value2"}
Info: JSON2: {}
sto espetting che il secondo JSON è {"test1":"test1"}
. Ho sbagliato?
Il problema sembra essere il collegamento con la funzione .build()
che imposta tutto il valore Mappa di elementi aggiunti a HASH_MAP
su null (vedere l'immagine).
Come posso lasciare intatto il valore all'interno di HASH_MAP
?
tenta di verificare che: mettere lo System.out .println ("JSON2:" + HASH_MAP.get ("uno"). build(). toString()); dopo la riga HASH_MAP.put ("uno", uno); –
Questo è l'output: JSON: {"test1": "test1"} # JSON: {"l1": [{}, {"test2": "test2"}], "otherParam": "value2"} # JSON : {} – user72708