net.sf.json.JSONObject agrega barras invertidas en las que no se espera?
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?
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.