読者です 読者をやめる 読者になる 読者になる

RubyでのJSON周りの話

基本JSON周りの話(csv,tsvからjsonへの変換、その逆などなど)

hash = File.open("meibo2.json") do |file|
  JSON.load(file)
end

jsonファイル読み込みの基本形(読み込んでハッシュに変換する)。取得した値に対して、タブなりなんなりでjoinして出力する際には基本は項目を明示的に指定してやる必要があるのはちょっとハマった(=hash.values で得られるvaluesは順不同で値が返ってくる可能性があるため)。たとえば⇛key["name"] + "\t" + key["gender"] + "\t" +key["age"] こんな感じの指定で。

jsonファイルのオープンについては一行で『hash = JSON.parse(File.read("honya.json"))』のように書くことも可能だが、例外時の原因がわかりづいらのでファイルが明示的に指定できる時とか用か。

csv,tsvからJSONへの変換は基本ファイルオープン、要素分割、key値ごとに値を入れてpretty_generateメソッドもしくはgenerateで出力するところまででワンセットか。下記はその一例

CSV.foreach('latlon.csv') do |csv|
    hash = {
      "lat" => csv[0],
      "lon" => csv[1]
    }
    pp hash
    csv_ary.push hash
end

File.open("latlon.json", "w") do |latjson|
  latjson.puts JSON.pretty_generate(csv_ary)
end