Domanda

Mi è stato presupposto che Jackson avrebbe sfuggire automaticamente i caratteri speciali durante la serializzazione serializzare vale a dire "/ percorso /" come "\ / path \ /". Sembra non essere il caso - almeno fuori dalla scatola con 1.6:

@Test
public void testJacksonSerialize() throws Exception
{
    ObjectMapper om = new ObjectMapper();
    assertEquals("\\/path\\/", om.writeValueAsString("/path/"));
}

... fallisce - l'output prodotto è "/ percorso /". Devo scrivere il mio serializzatore o c'è un modo per consentire carattere speciale fuggire a Jackson?

Grazie, -nikita

È stato utile?

Soluzione

Jackson sfugge solo le cose obbligatorie. "/" Non è qualcosa che si deve fuggire, quindi non è. Questo secondo JSON specifica.

Ora: se si vuole assolutamente sfuggire, è possibile utilizzare metodi di scrivere contenuti "raw" o valori (nel qual caso Jackson non fa alcuna elaborazione di alcun tipo e discariche String in uscita)

.

Ma non si ha realmente bisogno di tale fuga? So che alcuni generatori fanno sfuggire (per ragioni a me sconosciuto), ma non parser si aspetta che quindi dovrebbe essere più che bene a lasciare barre escape. Questo è diverso da backslash che, ovviamente, deve essere sfuggito.

Altri suggerimenti

La barra "/" non ha bisogno di essere sfuggito in JSON perché non ha un significato speciale. Eppure JSON permette la barra per essere sfuggito per il seguente motivo.

Se si dump di un diritto di testo JSON in un

scroll top