Julia Language
JSON
サーチ…
構文
- JSONを使用して
- JSON.parse(str)
- JSON.json(obj)
- JSON.print(io、obj、indent)
備考
Julia Dict
もJSONオブジェクトも本質的に順序付けされていないので、JSONオブジェクトのキーと値のペアの順序に頼らないのが最善です。
JSON.jlのインストール
JSONは一般的なデータ交換形式です。 Juliaの最も一般的なJSONライブラリはJSON.jlです。このパッケージをインストールするには、パッケージマネージャを使用します。
julia> Pkg.add("JSON")
次のステップは、パッケージがマシン上で動作しているかどうかをテストすることです。
julia> Pkg.test("JSON")
すべてのテストに合格すると、ライブラリは使用できる状態になります。
JSONの解析
文字列としてエンコードされたJSONは、標準のJulia型に簡単に解析できます。
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]
注意のJSON.jlのいくつかの即時のプロパティがあります:
- JSON型はJuliaの感覚型にマップされます。オブジェクトは
Dict
になり、配列はVector
になり、数値はInt64
またはFloat64
になり、ブール値はBool
になり、nullはnothing::Void
。 - JSONは型なしのコンテナ形式です。返されるJuliaベクトルは
Vector{Any}
型で、返される辞書はDict{String, Any}
です。 - JSON標準では整数と小数は区別されませんが、JSON.jlでは区別されます。小数点または科学的表記のない数値は
Int64
に解析されFloat64
が、小数点のある数値は解析されてFloat64
ます。これは他の多くの言語でのJSONパーサの動作と密接に一致します。
JSONのシリアライズ
JSON.json
関数は、JuliaオブジェクトをJSONを含むJulia String
シリアル化します。
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}
文字列が必要でない場合は、JSONを直接IOストリームに出力することができます:
julia> JSON.print(STDOUT, [1, 2, true, false, "x"])
[1,2,true,false,"x"]
STDOUT
はデフォルトであり、上記の呼び出しで省略することができます。
よりきれいな印刷は、オプションのindent
パラメータを渡すことで実現できます。
julia> JSON.print(STDOUT, Dict(:a => :b, :c => :d), 4)
{
"c": "d",
"a": "b"
}
複雑なジュリアタイプの場合、デフォルトのシリアル化は正常です。
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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow