JuliaでJSONファイルを読み書きする方法 (JSON.jl)
概要
Juliaでjsonファイルを扱うパッケージには、JSON.jl
、JSON3.jl
、Serde.jl
などがある。本ドキュメントではJSON.jl
について説明する。
JSON.jl
は純粋なJuliaで作られたパッケージで、jsonファイルをパースし、出力する機能を提供する。Juliaの標準ライブラリではないが、パッケージがGitHubでJuliaIOグループにまとめられており、管理者がJuliaの開発者であることから、公式パッケージと言っても差し支えないだろう。
コード
書き込み
辞書をjsonファイルに
以下のコードで辞書をjsonファイルに保存できる。JSON.print
の3番目の引数にindentを与えると、美しく保存される。
using JSON
dict_data = Dict("name" => "Jang, Wonyoung",
"age" => 19,
"group" => "IVE",
"nicknames" => ["Wonnyo", "Gatgi", "Lucky-Vicky"])
open("wonnyo.json", "w") do io
JSON.print(io, dict_data)
end
open("pretty_wonnyo.json", "w") do io
JSON.print(io, dict_data, 4)
end
文字列をjsonファイルに
以下のコードで文字列をjsonファイルに保存できます。基本的には辞書と同じ文法ですが、文字列はJSON.parse()
で一度パースする必要がある。同様に3番目の引数にindentを入力すると、美しく保存される。
str_data = """
{
"name": "Jang, Wonyoung",
"age": 19,
"group": "IVE",
"nicknames": ["Wonnyo", "Gatgi", "Lucky-Vicky"]
}
"""
open("wonnyo.json", "w") do io
JSON.print(io, JSON.parse(str_data))
end
open("pretty_wonnyo.json", "w") do io
JSON.print(io, JSON.parse(str_data), 4)
end
もしくは、以下のようにJSON.write
関数を使用して、文字列を直接jsonファイルに保存することもできる。この場合、空白と改行がそのまま反映される。
str_data = """
{
"name": "Jang, Wonyoung",
"age": 19,
"group": "IVE",
"nicknames": ["Wonnyo", "Gatgi", "Lucky-Vicky"]
}
"""
unpretty_str_data = """
{"name": "Jang, Wonyoung", "age": 19, "group": "IVE", "nicknames": ["Wonnyo", "Gatgi", "Lucky-Vicky"]}
"""
open("str2json.json", "w") do io
JSON.write(io, str_data)
end
open("unpretty_str2json.json", "w") do io
JSON.write(io, unpretty_str_data)
end
読み込み
以下のコードでjsonファイルを読み込める。
julia> using JSON
julia> dcit_from_json = JSON.parsefile("wonnyo.json")
Dict{String, Any} with 4 entries:
"name" => "Jang, Wonyoung"
"nicknames" => Any["Wonnyo", "Gatgi", "Lucky-Vicky"]
"group" => "IVE"
"age" => 19
または、次のように直接IOストリームで読み込むこともできる。
julia> open("wonnyo.json", "r") do io
str_from_json = read(io, String)
data_from_str = JSON.parse(str_from_json)
end
Dict{String, Any} with 4 entries:
"name" => "Jang, Wonyoung"
"nicknames" => Any["Wonnyo", "Gatgi", "Lucky-Vicky"]
"group" => "IVE"
"age" => 19
環境
- OS: Windows11
- バージョン: Julia 1.11.3, JSON v0.21.4