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
Int64aan verstandige typen in Julia: Object wordtDict, array wordtVector, nummer wordtInt64ofFloat64, Boolean wordtBoolen 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
}