JuliaでのJSONファイルの読み書き方法 (JSON3.jl)
概要
ジュリアでjsonファイルを扱うことを支援するパッケージには、JSON.jl
, JSON3.jl
, Serde.jl
などがある。本ドキュメントではJSON3.jl
について説明する。
JSON3.jl
は純粋ジュリアで書かれたパッケージで、jsonファイルのパースと出力の機能を提供する。JSON.jl
とは異なり、GitHubのJuliaIOグループに属しておらず、個人のリポジトリで管理されている。
コード
書き込み
ディクショナリをjsonファイルに
以下のようなコードでディクショナリをjsonファイルに保存することができる。
using JSON3
dict_data = Dict("name" => "Jang, Wonyoung",
"age" => 20,
"group" => "IVE",
"nicknames" => ["Wonnyo", "Gatgi", "Lucky-Vicky"])
# 딕셔너리를 json 파일로 저장
JSON3.write("wonnyo.json", dict_data)
# 혹은
open("wonnyo.json", "w") do io
JSON3.write(io, dict_data)
end
# 예쁘게 저장
open("pretty_wonnyo.json", "w") do io
JSON3.pretty(io, dict_data)
end
文字列をjsonファイルに
文字列の場合もディクショナリとほぼ同じ方法で行うが、JSON3.write
関数に入れる前にJSON3.read
でパースが必要である。
str_data = """
{
"name": "Jang, Wonyoung",
"age": 20,
"group": "IVE",
"nicknames": ["Wonnyo", "Gatgi", "Lucky-Vicky"]
}
"""
# 문자열을 json 파일로 저장
JSON3.write("wonnyo.json", JSON3.read(str_data))
# 예쁘게 저장
open("pretty_wonnyo.json", "w") do io
JSON3.pretty(io, str_data)
end
読み込み
JSON3.read
関数を使うと、jsonファイルをディクショナリ「のように」読み込むことができる。「のように」と言った理由は、実際にはディクショナリではなくJSON3.Object
という別の型だからである。Dict
関数を通してすぐにディクショナリに変換することができる。文字列として読み込むには単にread
関数を使えばいい。
julia> json_data = JSON3.read("wonnyo.json")
JSON3.Object{Vector{UInt8}, Vector{UInt64}} with 4 entries:
:name => "Jang, Wonyoung"
:age => 20
:group => "IVE"
:nicknames => ["Wonnyo", "Gatgi", "Lucky-Vicky"]
julia> json_data[:name]
"Jang, Wonyoung"
julia> Dict(json_data)
Dict{Symbol, Any} with 4 entries:
:group => "IVE"
:age => 20
:name => "Jang, Wonyoung"
:nicknames => ["Wonnyo", "Gatgi", "Lucky-Vicky"]
julia> str_from_json = read("wonnyo.json", String)
"{\"name\":\"Jang, Wonyoung\",\"age\":20,\"group\":\"IVE\",\"nicknames\":[\"Wonnyo\",\"Gatgi\",\"Lucky-Vicky\"]}"
環境
- OS: Windows11
- Version: Julia 1.11.3, JSON3 v1.14.2