줄리아에서 JSON 파일 읽고 쓰는 법 (JSON3.jl)
개요
줄리아에서 json 파일을 다룰 수 있게 도와주는 패키지로는 JSON.jl
, JSON3.jl
, Serde.jl
등이 있다. 본 문서에서는 JSON3.jl
에 대해서 설명한다.
JSON3.jl
은 순수 줄리아로 짜여진 패키지로, json 파일을 파싱하고 출력하는 기능을 제공한다. JSON.jl
과는 달리 깃허브에서 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