Sök…


Syntax

  • med JSON
  • JSON.parse (str)
  • JSON.json (obj)
  • JSON.print (io, obj, strecksats)

Anmärkningar

Eftersom varken Julia Dict eller JSON-objekt är i sig ordnade är det bäst att inte lita på ordningen på nyckelvärdespar i ett JSON-objekt.

Installera JSON.jl

JSON är ett populärt datautbytesformat. Det mest populära JSON-biblioteket för Julia är JSON.jl. För att installera detta paket använder du pakethanteraren:

julia> Pkg.add("JSON")

Nästa steg är att testa om paketet fungerar på din maskin:

julia> Pkg.test("JSON")

Om alla tester klarat är biblioteket klart för användning.

Analysera JSON

JSON som har kodats som en sträng kan enkelt tolkas till en standard Julia-typ:

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]

Det finns några omedelbara egenskaper hos JSON.jl:

  • JSON typer kartlägger förnuftiga typer i Julia: Objekt blir Dict , array blir Vector , nummer blir Int64 eller Float64 , boolean blir Bool , och null blir nothing::Void .
  • JSON är ett otypat behållarformat: Således returnerade Julia-vektorer är av typen Vector{Any} , och returnerade ordböcker är av typen Dict{String, Any} .
  • JSON-standard skiljer inte mellan heltal och decimaltal, men JSON.jl gör det. Ett nummer utan en decimal eller vetenskaplig notering har analyserats i Int64 , medan ett nummer med en decimalpunkt analyseras i Float64 . Detta överensstämmer nära med beteendet hos JSON-tolkare på många andra språk.

Serialiserar JSON

Funktionen JSON.json serialiserar ett Julia-objekt i en Julia- String innehåller JSON:

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}

Om en sträng inte önskas kan JSON skrivas ut direkt till en IO-ström:

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

Observera att STDOUT är standard och kan utelämnas i ovanstående samtal.

Snyggare utskrift kan uppnås genom att passera den valfria indent :

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

Det finns en tillräcklig standardserialisering för komplexa Julia-typer:

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow