2011-02-06 8 views
23
ruby-1.9.2-p0 > require 'json' 
=> true 
ruby-1.9.2-p0 > hash = {hi: "sup", yo: "hey"} 
=> {:hi=>"sup", :yo=>"hey"} 
ruby-1.9.2-p0 > hash.to_json 
=> "{\"hi\":\"sup\",\"yo\":\"hey\"}" 
ruby-1.9.2-p0 > j hash 
{"hi":"sup","yo":"hey"} 
=> nil 

j hash pone la respuesta que quiero, pero devuelve nil.¿Cómo convierto un Hash en una cadena JSON en Ruby 1.9?

hash.to_json devuelve la respuesta que quiero con las barras diagonales inversas. No quiero las barras diagonales inversas.

+0

¿Qué backslashes? – Phrogz

+0

Actualicé la pregunta con los valores STDOUT y de retorno. – ma11hew28

+0

Maravilloso, yo no existía. Usamos y a menudo para formatear Hashes y Objetos. –

Respuesta

34

Eso es solo por String#inspect. No hay barras diagonales inversas. Prueba:

hjs = hash.to_json 
puts hjs 
10

Estás en el camino correcto. to_json lo convierte a formato JSON. No permita que la salida IRB lo engañe: no contiene barras diagonales inversas.

Prueba esto: puts hash.to_json y debería ver esto: {"hi":"sup","yo":"hey"}

5

que no tienen Ruby1.9 para poner a prueba, pero al parecer que está recibiendo la vista "inspeccionar". Esas barras invertidas no están ahí, solo están escapando de las comillas. Ejecute puts hash.to_json para verificar.

Cuestiones relacionadas