logo

JuliaでのJSONファイルの読み書き方法 (JSON3.jl) 📂Julia

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

alt text

文字列を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