Ruby에서 해시를 만들고 올바른 형식으로 JSON 파일에 쓰고 싶습니다.
내 코드는 다음과 같습니다.
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
결과 파일의 내용은 다음과 같습니다.
key_aval_akey_bval_b
Sinatra (버전을 모르겠 음)와 Ruby v 1.8.7을 사용하고 있습니다.
올바른 JSON 형식으로 파일에 어떻게 쓸 수 있습니까?
답변
JSON 라이브러리가 필요하고 to_json
.
require 'json'
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
File.open("public/temp.json","w") do |f|
f.write(tempHash.to_json)
end
이제 temp.json 파일은 다음과 같습니다.
{"key_a":"val_a","key_b":"val_b"}
답변
서식 포함
require 'json'
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
File.open("public/temp.json","w") do |f|
f.write(JSON.pretty_generate(tempHash))
end
산출
{
"key_a":"val_a",
"key_b":"val_b"
}
답변
이 질문은 루비 1.8에 대한 것이지만 인터넷 검색을 할 때 여전히 맨 위에 있습니다.
루비> = 1.9에서는 다음을 사용할 수 있습니다.
File.write("public/temp.json",tempHash.to_json)
다른 답변에서 언급 한 것 외에 루비 1.8에서는 하나의 라이너 양식을 사용할 수도 있습니다.
File.open("public/temp.json","w"){ |f| f.write tempHash.to_json }
답변
Ubuntu Linux에서이 작업을 수행하려면 :
-
Ubuntu 패키지 ruby-json을 설치했습니다.
apt-get install ruby-json
-
나는 대본을 썼다
${HOME}/rubybin/jsonDEMO
-
$HOME/.bashrc
포함 :${HOME}/rubybin:${PATH}
(이번에는 bash 명령 줄에 위의 내용도 입력했습니다.)
그런 다음 명령 줄에 입력했을 때 작동했습니다.
jsonDemo