Pregunta

Me estoy perdiendo mi cabello tratando de averiguar por qué net.sf.json.JSONObject añadir barra inversa extra donde debe no en mi código java:

JSONObject obj = new JSONObject ();
obj.element ("column_name", "<a href=\"#\" title=\"test\">Test !</a>");

es la salida:

<a href=\"#\" title=\"test\">Test !<\/a>

con un extra "\" cerca .

¿Cómo puedo evitar este comportamiento?

¿Fue útil?

Solución

Es probable que utiliza el mismo método para escapar de las cadenas en JSON como lo hace cadenas JavaScript utilizados en bloques de script (<script ...> ... </script>) que de acuerdo con las reglas de sintaxis HTML no podrá suponer la </ secuencia de caracteres.

¿Tiene esto alguna diferencia para usted? Escapar caracteres "al azar" no cambia el significado de unas cadenas literales en JSON o JavaScript. El "/" literales de cadena y "\/" son técnicamente absolutamente idénticas:

if ("/" === "\/") alert("The same!");

EDIT:. Por cierto, la gramática JSON enumera explícitamente la barra inclinada (solidus) como un personaje que se puede escapar

Otros consejos

También se encontró con este problema. Resulta que el problema fue que mi código utilizado tanto org.json.JSONObject y com.amazonaws.util.json.JSONObject. La conversión entre los dos fue la creación de cadenas y caracteres de escape. Teniendo en cuenta que está utilizando net.sf.json.JSONObject, esto podría ser su problema también. Revisar sus importaciones para otras versiones de JSONObject.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top