Question

Je supposais que Jackson échapperait automatiquement des caractères spéciaux pendant la sérialisation à savoir serialize « / chemin / » comme « \ / chemin \ / ». Il ne semble pas être le cas - au moins hors de la boîte avec 1.6:

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

... ne - la sortie produite est "/ chemin /". Dois-je écrire mon propre sérialiseur ou est-il un moyen de permettre à caractère spécial échapper à Jackson?

Merci, -nikita

Était-ce utile?

La solution

Jackson échappe que les choses obligatoires. « / » N'est pas quelque chose que vous devez échapper, par conséquent, il n'est pas. Cette spécification selon JSON.

: si vous voulez absolument échapper, vous pouvez utiliser des méthodes pour écrire le contenu « brut » ou des valeurs (dans ce cas, Jackson ne fait pas le traitement que ce soit et dépotoirs chaîne en sortie)

.

Mais avez-vous vraiment besoin d'une telle réchappés? Je sais que certains producteurs font échapper (pour des raisons inconnues pour moi), mais pas l'analyseur, il s'attend donc il devrait être très bien de laisser des barres obliques sans échappement. Ceci est différent de antislashs qui doivent évidemment être échappées.

Autres conseils

La barre oblique « / » n'a pas besoin d'être échappé à JSON parce qu'il n'a pas de signification particulière. Pourtant, JSON permet la barre oblique à échapper pour la raison suivante.

Si vous videz un droit de texte JSON dans un

scroll top