Buscar..


Sintaxis

  • usando JSON
  • JSON.parse (str)
  • JSON.json (obj)
  • JSON.print (io, obj, sangría)

Observaciones

Dado que ni Julia Dict ni los objetos JSON están intrínsecamente ordenados, es mejor no confiar en el orden de los pares clave-valor en un objeto JSON.

Instalando JSON.jl

JSON es un popular formato de intercambio de datos. La biblioteca JSON más popular para Julia es JSON.jl. Para instalar este paquete, use el administrador de paquetes:

julia> Pkg.add("JSON")

El siguiente paso es probar si el paquete está funcionando en su máquina:

julia> Pkg.test("JSON")

Si todas las pruebas pasaron, entonces la biblioteca está lista para su uso.

Analizando JSON

JSON que se ha codificado como una cadena se puede analizar fácilmente en un tipo de Julia estándar:

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]

Hay algunas propiedades inmediatas de JSON.jl de la nota:

  • Los tipos JSON se asignan a tipos sensibles en Julia: el objeto se convierte en Dict , la matriz se convierte en Vector , el número se convierte en Int64 o Float64 , el booleano se convierte en Bool y el valor nulo se convierte en nothing::Void .
  • JSON es un formato de contenedor sin tipo: por lo tanto, los vectores Julia devueltos son de tipo Vector{Any} , y los diccionarios devueltos son de tipo Dict{String, Any} .
  • El estándar JSON no distingue entre números enteros y decimales, pero JSON.jl lo hace. Un número sin un punto decimal o una notación científica se analiza en Int64 , mientras que un número con un punto decimal se analiza en Float64 . Esto coincide estrechamente con el comportamiento de los analizadores JSON en muchos otros idiomas.

Serialización JSON

La función JSON.json serializa un objeto Julia en una String Julia que contiene 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}

Si no se desea una cadena, JSON se puede imprimir directamente en una secuencia de IO:

julia> JSON.print(STDOUT, [1, 2, true, false, "x"])
[1,2,true,false,"x"]

Tenga en cuenta que STDOUT es el valor predeterminado y se puede omitir en la llamada anterior.

La impresión más bonita se puede lograr al pasar el parámetro de indent opcional:

julia> JSON.print(STDOUT, Dict(:a => :b, :c => :d), 4)
{
    "c": "d",
    "a": "b"
}

Hay una serialización por defecto para los tipos complejos de Julia:

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow