Estoy creando un hash en Ruby y quiero escribirlo en un archivo JSON, en el formato correcto.
Aquí está mi código:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
Y aquí está el contenido del archivo resultante:
key_aval_akey_bval_b
Estoy usando Sinatra (no sé qué versión) y Ruby v 1.8.7.
¿Cómo puedo escribir esto en el archivo en el formato JSON correcto?
Respuestas:
Requiere la biblioteca JSON y usa
to_json
.Su archivo temp.json ahora se ve así:
fuente
File.open(...){ |f| f << h.to_json }
JSON.pretty_generate(tempHash)
también es rad ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/…Con formato
Salida
fuente
pretty_generate
, a menos que el consumidor de la salida sea un humano. Incluso entonces, es mejor generar JSONlines y usar algo comojq
para ver el resultado.Esta pregunta es para ruby 1.8, pero aún aparece en la parte superior cuando se busca en Google.
en ruby> = 1.9 puedes usar
Aparte de lo mencionado en otras respuestas, en ruby 1.8 también puede usar un formulario de revestimiento
fuente
Para que esto funcione en Ubuntu Linux:
Instalé el paquete de Ubuntu ruby-json:
Escribí el guión en
${HOME}/rubybin/jsonDEMO
$HOME/.bashrc
incluido:(En esta ocasión también escribí lo anterior en la línea de comando de bash).
Luego funcionó cuando entré en la línea de comando:
fuente