Tworzę hash w Rubim i chcę zapisać go w pliku JSON w odpowiednim formacie.
Oto mój kod:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
A oto zawartość pliku wynikowego:
key_aval_akey_bval_b
Używam Sinatry (nie wiem jaka wersja) i Ruby v 1.8.7.
Jak mogę zapisać to do pliku w odpowiednim formacie JSON?
Odpowiedzi:
Wymagaj biblioteki JSON i użyj
to_json
.Twój plik temp.json wygląda teraz następująco:
źródło
File.open(...){ |f| f << h.to_json }
JSON.pretty_generate(tempHash)
jest również rad ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/…Z formatowaniem
Wynik
źródło
pretty_generate
, chyba że konsumentem wyjścia jest człowiek. Nawet wtedy lepiej jest wygenerować linie JSON i użyć czegoś takiego, jakjq
do wyświetlenia danych wyjściowych.To pytanie dotyczy ruby 1.8, ale nadal jest na topie podczas wyszukiwania w Google.
w ruby> = 1,9 możesz użyć
poza tym, co wspomniano w innych odpowiedziach, w Ruby 1.8 możesz również użyć jednego formularza liniowego
źródło
Aby to działało w systemie Ubuntu Linux:
Zainstalowałem pakiet Ubuntu ruby-json:
Napisałem scenariusz w
${HOME}/rubybin/jsonDEMO
$HOME/.bashrc
w zestawie:(Przy tej okazji również wpisałem powyższe w linii poleceń bash.)
Wtedy zadziałało, gdy wszedłem w linii poleceń:
źródło