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 wordt Dict , array wordt Vector , nummer wordt Int64 of Float64 , Boolean wordt Bool en null wordt nothing::Void .
  • JSON is een container zonder indeling: geretourneerde Julia-vectoren zijn van het type Vector{Any} en geretourneerde woordenboeken zijn van het type Dict{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 in Float64 . 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
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow