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).

werfen Sie einen Blick auf diese post, wie JsonNodeFactory zum erstellen einer ObjectNode: stackoverflow.com/questions/11503604/...

InformationsquelleAutor Chris | 2015-12-09

Schreibe einen Kommentar