수색…


통사론

  • JSON 사용
  • JSON.parse (str)
  • JSON.json (obj)
  • JSON.print (io, obj, indent)

비고

Julia Dict 와 JSON 객체는 본질적으로 정렬되어 있지 않으므로 JSON 객체에서 키 - 값 쌍의 순서에 의존하지 않는 것이 가장 좋습니다.

JSON.jl 설치하기

JSON은 널리 사용되는 데이터 교환 형식입니다. Julia에서 가장 많이 사용되는 JSON 라이브러리는 JSON.jl 입니다. 이 패키지를 설치하려면 패키지 관리자를 사용하십시오.

julia> Pkg.add("JSON")

다음 단계는 패키지가 컴퓨터에서 작동하는지 테스트하는 것입니다.

julia> Pkg.test("JSON")

모든 테스트가 통과되면 라이브러리를 사용할 수 있습니다.

JSON 구문 분석

문자열로 인코딩 된 JSON은 표준 줄리아 형식으로 쉽게 파싱 할 수 있습니다.

julia> using JSON

julia> JSON.parse("""{
           "this": ["is", "json"],
           "numbers": [85, 16, 12.0],
           "and": [true, false, null]
       }""")
Dict{String,Any} with 3 entries:
  "this"    => Any["is","json"]
  "numbers" => Any[85,16,12.0]
  "and"     => Any[true,false,nothing]

JSON.jl에는 몇 가지 즉각적인 속성이 있습니다.

  • JSON 유형은 Julia의 유용한 유형에 매핑됩니다. 객체는 Dict , 배열은 Vector , 숫자는 Int64 또는 Float64 가되고, 부울은 Bool 이되며 null은 nothing::Void 됩니다. nothing::Void .
  • JSON은 형식화되지 않은 컨테이너 형식입니다. 따라서 반환 된 줄리아 벡터는 Vector{Any} 유형이고 반환 된 사전은 Dict{String, Any} 유형입니다.
  • JSON 표준은 정수와 십진수를 구분하지 않지만 JSON.jl은 구분합니다. 소수점 또는 과학 표기법이없는 숫자는 Int64 로 파싱되지만 소수점이있는 숫자는 Float64 로 파싱됩니다. 이것은 다른 많은 언어에서 JSON 파서의 동작과 밀접하게 일치합니다.

JSON 직렬화

JSON.json 함수는 Julia 객체를 JSON이 포함 된 Julia String 으로 직렬화합니다.

julia> using JSON

julia> JSON.json(Dict(:a => :b, :c => [1, 2, 3.0], :d => nothing))
"{\"c\":[1.0,2.0,3.0],\"a\":\"b\",\"d\":null}"

julia> println(ans)
{"c":[1.0,2.0,3.0],"a":"b","d":null}

문자열을 원하지 않으면 JSON을 직접 IO 스트림에 인쇄 할 수 있습니다.

julia> JSON.print(STDOUT, [1, 2, true, false, "x"])
[1,2,true,false,"x"]

STDOUT 은 기본값이며 위의 호출에서 생략 될 수 있습니다.

더 나은 인쇄는 선택적인 indent 매개 변수를 전달하여 얻을 수 있습니다 :

julia> JSON.print(STDOUT, Dict(:a => :b, :c => :d), 4)
{
    "c": "d",
    "a": "b"
}

복잡한 줄리아 유형에는 정상적인 직렬화가 있습니다.

julia> immutable Point3D
           x::Float64
           y::Float64
           z::Float64
       end

julia> JSON.print(Point3D(1.0, 2.0, 3.0), 4)
{
    "y": 2.0,
    "z": 3.0,
    "x": 1.0
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow