2012-07-16 24 views
39

tengo un nuevo JsonNode que creécómo crear insertar nuevos nodos en JsonNode?

JsonNode jNode = new ObjectCodec().createObjectNode(); 

con este nodo, ¿cómo entonces añadir pares de valores clave dentro de modo que pueda construir este nuevo nodo con los nuevos valores? Lo que leo en http://www.cowtowncoder.com/blog/archives/2011/08/entry_460.html mencionado sobre el uso de

jNode.with("newNode").put("key1","value1"); 

Pero al mirar a las APIs para JsonNode de Jackson (v1.8) no muestra ningún método como tal.

Respuesta

55

Estos métodos están en ObjectNode: la división es tal que la mayoría de las operaciones de lectura están incluidos en JsonNode, pero las mutaciones en ObjectNode y ArrayNode.

Tenga en cuenta que sólo se puede cambiar primera línea ser:

ObjectNode jNode = mapper.createObjectNode(); 
// version ObjectMapper has should return ObjectNode type 

o

ObjectNode jNode = (ObjectNode) objectCodec.createObjectNode(); 
// ObjectCodec is in core part, must be of type JsonNode so need cast 
+7

Gracias por este StaxMan. Una pregunta de seguimiento que me olvidé de poner es ¿cómo puedo insertar este nodo en un nodo existente? –

+0

Normalmente agrega hijos utilizando el método de 'ObjectNode' o' ArrayNode'; mapper solo se usa para construir nodos raíz. Así que echa un vistazo al método 'putObject' o' addObject' en 'ObjectNode' /' ArrayNode' – StaxMan

43

he encontrado recientemente manera aún más interesante para crear cualquier ValueNode o ContainerNode (Jackson v2.3)

ObjectNode node = JsonNodeFactory.instance.objectNode(); 
+6

No hay nada de malo en esto. Eso es lo que la instancia singleton está ahí para – cesar

+0

Sí, pero por alguna razón extraño un método de instancia en lugar de una referencia de variable – deFreitas

Cuestiones relacionadas