Erstellen Jackson ObjectNode von Objekt
Ich muss hinzufügen eines neuen Elements zu einer vorhandenen ObjectNode
, erhält einen Schlüssel und einen Wert. Der Wert ist angegeben als Object
in der Methode sig und sollte einer der Typen, die ObjectNode.set() akzeptiert (String
, Integer
, Boolean
, etc). Aber ich kann nicht einfach tun myObjectNode.set(key, value);
denn Wert ist nur ein Object
und natürlich bekomme ich ein "gilt nicht für die Argumente (String, Object)" Fehler.
Mein make-it-work-Lösung ist das erstellen einer Funktion zum überprüfen der instanceof
und warf es zu schaffen, ein ValueNode
:
private static ValueNode getValueNode(Object obj) {
if (obj instanceof Integer) {
return mapper.createObjectNode().numberNode((Integer)obj);
}
if (obj instanceof Boolean) {
return mapper.createObjectNode().booleanNode((Boolean)obj);
}
//...Etc for all the types I expect
}
..und dann kann ich verwenden myObjectNode.set(key, getValueNode(value));
Es muss einen besseren Weg aber ich habe Schwierigkeiten, es zu finden.
Ich vermute, dass es ist ein Weg, um ObjectMapper
aber, wie nicht klar ist mir an dieser Stelle. Zum Beispiel Ich kann schreiben Sie den Wert als string, aber ich brauche es als etwas ich kann auf meinem ObjectNode und muss den richtigen Typ (dh alles kann man nicht einfach in einen String konvertiert).
JsonNodeFactory
zum erstellen einer ObjectNode
: stackoverflow.com/questions/11503604/...InformationsquelleAutor Chris | 2015-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden ObjectMapper#convertValue Methode, um verdeckte Objekt ein JsonNode Instanz. Hier ist ein Beispiel:
Ausgabe:
InformationsquelleAutor Alexey Gavrilov