La gema json
no permite la codificación directa de cadenas para su representación JSON. Tentativamente portado este código PHP:Codifica una cadena de Ruby en una cadena JSON
$text = json_encode($string);
a este Ruby:
text = string.inspect
y parecía que hacer el trabajo, pero por alguna razón si el string
en sí contiene una cadena literal (en realidad es el código JS) con líneas nuevas, estas nuevas líneas \n
se quedarán como están \n
, no codificadas en \\n
. Puedo entender si este es el comportamiento correcto de #inspect
, pero ...
¿Cómo se codifica un valor de cadena en su representación JSON en Ruby?
Como se mencionó, el 'joya json' __does no permiten cadenas de codificación directly__. Voy a echar un vistazo a un Yajl. –
Para compatibilidad de joya JSON en yajl puede hacer 'require 'yajl/json_gem'' – mikeycgto
Vale la pena señalar que esta respuesta supone que el cartel de pregunta está utilizando rieles (sin embargo, esto no estaba estipulado en la pregunta). 'JSON.encode' es provisto por rails como' object.to_json'. Para usos fuera de los rieles use 'JSON.generate' que está en ruby 1.9.3 std-lib. – Stewart