2013-05-15 22 views
7

Sto memorizzando una stringa json in un campo di testo in mysql. Dopo l'inserimento, voglio aggiornare la mia stringa json e aggiungere l'id della riga mysql al suo interno con jackson json.Aggiungere una proprietà a una stringa json con jackson json

Ho uno stringa java che è in formato JSON

{ 
    "thing":"val" 
} 

Sto cercando di aggiungere un altro K/V senza dover scrivere righe di codice.

di avere finalmente questo:

{ 
    "thing":"val" 
    "mysqlId":10 
} 

posso convertire il mio String ad un JsonNode:

ObjectMapper mapper = new ObjectMapper(); 
JsonNode json = mapper.readTree(jsonStr); 

Cercando di fare qualcosa di simile

json.put("mysqlId",10); 
json.toString(); 

quindi aggiornare nel mio testo campo con nuova stringa json in mysql

Non ce la faccio. Non voglio usare molte classi c'è un modo semplice per farlo con Jackson?

+0

Suona come un requisito dispari. Puoi dare un esempio di ciò che stai cercando di ottenere? – NilsH

+0

Sto aggiornando il post – BigDong

+0

Prova ad aggiornare la tua domanda invece con il codice di esempio. – NilsH

risposta

23

Prova a trasmettere il vostro JsonNode a un com.fasterxml.jackson.databind.node.ObjectNode e quindi chiamando messoset (o replace) su di esso.

+0

Questo ha bisogno di più voti - jeez mi ha risparmiato un sacco di tempo. – Spedge

+4

* Il metodo put * in ObjectNode è deprecato nella v2.4. Devi usare * set * o * replace *. –

+0

c'è un modo per sfruttare Jackson per cambiare semplicemente il * nome * di una proprietà in una stringa JSON? Cioè supponiamo che voglia cambiare ''id': 42' a' 'my_id': 42' - senza dover conoscere il valore 42 e ricreare la proprietà? – mmcrae

Problemi correlati