Julia Language
JSON
Zoeken…
Syntaxis
- met behulp van JSON
- JSON.parse (str)
- JSON.json (obj)
- JSON.print (io, obj, streepje)
Opmerkingen
Aangezien noch Julia Dict
noch JSON-objecten inherent zijn geordend, is het het beste om niet te vertrouwen op de volgorde van sleutel / waarde-paren in een JSON-object.
JSON.jl installeren
JSON is een populair formaat voor gegevensuitwisseling. De populairste JSON-bibliotheek voor Julia is JSON.jl. Gebruik de pakketbeheerder om dit pakket te installeren:
julia> Pkg.add("JSON")
De volgende stap is om te testen of het pakket op uw machine werkt:
julia> Pkg.test("JSON")
Als alle tests zijn geslaagd, is de bibliotheek klaar voor gebruik.
JSON ontleden
JSON die is gecodeerd als een tekenreeks, kan eenvoudig worden ontleed in een standaard Julia-type:
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]
Er zijn enkele onmiddellijke eigenschappen van JSON.jl:
- JSON-typen worden
Int64
aan verstandige typen in Julia: Object wordtDict
, array wordtVector
, nummer wordtInt64
ofFloat64
, Boolean wordtBool
en null wordtnothing::Void
. - JSON is een container zonder indeling: geretourneerde Julia-vectoren zijn van het type
Vector{Any}
en geretourneerde woordenboeken zijn van het typeDict{String, Any}
. - JSON-standaard maakt geen onderscheid tussen gehele getallen en decimale getallen, maar JSON.jl wel. Een getal zonder decimaal of wetenschappelijke notatie wordt ontleed in
Int64
, terwijl een getal met een decimaal wordt ontleed inFloat64
. Dit komt nauw overeen met het gedrag van JSON-parsers in vele andere talen.
JSON serialiseren
De JSON.json
functie serialiseert een Julia-object in een Julia String
met 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}
Als een string niet gewenst is, kan JSON rechtstreeks naar een IO-stream worden afgedrukt:
julia> JSON.print(STDOUT, [1, 2, true, false, "x"])
[1,2,true,false,"x"]
Merk op dat STDOUT
de standaard is en in de bovenstaande aanroep kan worden weggelaten.
Prettier afdrukken kan worden bereikt door de optionele parameter indent
door te geven:
julia> JSON.print(STDOUT, Dict(:a => :b, :c => :d), 4)
{
"c": "d",
"a": "b"
}
Er is een normale standaardserialisatie voor complexe Julia-typen:
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
}