Julia Language
JSON
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 blirVector
, nummer blirInt64
ellerFloat64
, boolean blirBool
, och null blirnothing::Void
. - JSON är ett otypat behållarformat: Således returnerade Julia-vektorer är av typen
Vector{Any}
, och returnerade ordböcker är av typenDict{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 iFloat64
. 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
}