logo

줄리아에서 JSON 파일 읽고 쓰는 법 (JSON.jl) 📂줄리아

줄리아에서 JSON 파일 읽고 쓰는 법 (JSON.jl)

개요

줄리아에서 json 파일을 다룰 수 있게 도와주는 패키지로는 JSON.jl, JSON3.jl, Serde.jl 등이 있다. 본 문서에서는 JSON.jl에 대해서 설명한다.

JSON.jl은 순수 줄리아로 짜여진 패키지로, json 파일을 파싱하고 출력하는 기능을 제공한다. 줄리아의 표준 라이브러리는 아니지만 패키지가 깃허브에서 JuliaIO 그룹에 묶여있고 관리자가 줄리아 개발자인 것으로 보아, 공식 패키지라고 봐도 무방할 듯 하다.

코드

쓰기

딕셔너리를 json 파일로

아래와 같은 코드로 딕셔너리를 json 파일로 저장할 수 있다. JSON.print의 세번째 인자로 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()로 한 번 파싱을 해줘야한다.마찬가지로 세번째 인자로 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
  • Version: Julia 1.11.3, JSON v0.21.4