2011-01-12 25 views
9

Suponía que Jackson escaparía automáticamente de los caracteres especiales durante la serialización, es decir, serializaría "/ ruta /" como "\/ruta \ /". Que no parece ser el caso - por lo menos fuera de la caja con 1,6:¿Jackson JSON tiene un escape especial?

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

... falla - la salida producida es "/ ruta /". ¿Tengo que escribir mi propio serializador o hay alguna forma de habilitar el escape especial de char en Jackson?

gracias, -nikita

+0

El virgule es un personaje especial en cadenas JSON? – Joey

+0

¿'/' JSON no es válido? – skaffman

+0

En realidad, si "/" debería escaparse es la mejor pregunta. Así lo asumí al mirar este documento de Twillio: http://www.twilio.com/docs/api/2010-04-01/rest/response#response#response-formats-list-paging-information Pero JSLint ain ' t quejándose ¿Por qué Twilio escapa "/" luego en respuestas JSON? – Nikita

Respuesta

4

Jackson que solo salga cosas obligatorias. "/" no es algo que debes escapar, por lo tanto, no lo es. Esto según la especificación JSON.

Ahora: si realmente quiere escapar, puede usar métodos para escribir contenido o valores "en bruto" (en cuyo caso, Jackson no procesa en absoluto y tira String en la salida).

¿Pero realmente necesita tal escape? Sé que algunos generadores se escapan (por razones desconocidas para mí), pero ningún analizador lo espera, por lo que debería estar bien dejar los cortes incoloros. Esto es diferente de las barras diagonales que obviamente deben escapar.

1

La barra diagonal "/" no necesita ser escapada en JSON porque no tiene un significado especial. Sin embargo, JSON permite escaparse por el siguiente motivo.

Si coloca un texto JSON directamente en un elemento < SCRIPT> de un texto HTML, debe asegurarse de que la secuencia de dos caracteres "< /" no aparezca en el texto. Esa secuencia terminaría el elemento de guión inmediatamente según las reglas de HTML. Pero si el texto JSON dice "< \ /", esto tiene el mismo significado para JSON sin interferir con las reglas de HTML. En consecuencia, algunos generadores JSON escapan de la barra si y solo si está precedida por un signo menos que.

Dicho esto, no sé la respuesta directa a su pregunta (cómo hacer el escape en Jackson).

0

El nuevo carácter de línea no funcionará en el caso de Tooltip con algunos navegadores. No de trabajo \ r \ n no trabajar o \ n No funciona

Uso doble barra invertida para saltar caracteres

Solución: Use '\\ r \\ n' en lugar de '\ r \ n',
resolverá su problema.

Cuestiones relacionadas