API Reference
JSON parser
YYJSON.ParserJSON.parse_json
— Functionparse_json(x::String; kw...)
parse_json(x::Vector{UInt8}; kw...)
Parse a JSON string x
(or vector of UInt8
) into a dictionary.
Keyword arguments
dict_type::Type{D} = Dict{String,Any}
: Defines the type ofdictionary
into whichobjects
will be parsed.null::Union{Nothing,Missing} = nothing
: Null value.in_situ::Bool
: This option allows the reader to modify and use the input data to store string values, which can slightly improve reading speed.number_as_raw::Bool
: Read all numbers as raw strings without parsing.bignum_as_raw::Bool
: Read big numbers as raw strings.stop_when_done::Bool
: Stop parsing when reaching the end of a JSON document instead of issues an error if there's additional content after it.allow_comments::Bool
: Allow C-style single line and multiple line comments.allow_inf_and_nan::Bool
: Allownan
/inf
` number or case-insensitive literal.allow_invalid_unicode::Bool
: Allow reading invalid unicode when parsing string values.allow_trailing_commas::Bool
: Allow a single trailing comma at the end of an object or array.
Examples
julia> json = """{
"str": "John Doe",
"num": "30",
"array": [1,2,{"a": 3, "b": null}],
"bool": false,
"obj" : {"a": 1, "b": null},
"another": "key"
}
""";
julia> parse_json(json)
Dict{String, Any} with 6 entries:
"another" => "key"
"str" => "John Doe"
"obj" => Dict{String, Any}("b"=>nothing, "a"=>1)
"array" => Any[1, 2, Dict{String, Any}("b"=>nothing, "a"=>3)]
"num" => "30"
"bool" => false
YYJSON.ParserJSON.open_json
— Functionopen_json(path::String; kw...)
Reads a JSON file from a given path
and parse it into dictionary.
Keyword arguments
Similar to parse_json
.
open_json(io::IO; kw...)
Reads a JSON file from a given io
and parse it into dictionary.
Keyword arguments
Similar to parse_json
.
JSON lazy parser
YYJSON.LazyJSON.LazyJSONDict
— TypeLazyJSONDict <: AbstractDict{AbstractString,Any}
Represents a dictionary for a JSON object.
Fields
ptr::Ptr{YYJSONVal}
: The object value pointer.iter::YYJSONObjIter
: The object iterator structure.doc_ptr::Ptr{YYJSONDoc}
: The JSON document pointer (non-null only for the root).alc_ptr::Ptr{YYJSONAlc}
: The dynamic allocator pointer (non-null only for the root).freed::Bool
: Flag indicating whether the document is freed.
YYJSON.LazyJSON.LazyJSONVector
— TypeLazyJSONVector <: AbstractVector{Any}
Represents a vector for a JSON array.
Fields
ptr::Ptr{YYJSONVal}
: The array value pointer.doc_ptr::Ptr{YYJSONDoc}
: The JSON document pointer (non-null only for the root).alc_ptr::Ptr{YYJSONAlc}
: The dynamic allocator pointer (non-null only for the root).freed::Bool
: Flag indicating whether the document is freed.
YYJSON.LazyJSON.parse_lazy_json
— Functionparse_lazy_json([f::Function], json::String; kw...)
parse_lazy_json([f::Function], json::Vector{UInt8}; kw...)
Parse a JSON string json
(or vector of UInt8
) into a LazyJSONDict
or LazyJSONVector
.
When it's no longer needed, it should be closed with close
or use do
block syntax.
Keyword arguments
Similar to parse_json
.
Examples
julia> json = """{
"str": "John Doe",
"num": "30",
"array": [1,2,{"a": 3, "b": null}],
"bool": false,
"obj" : {"a": 1, "b": null},
"another": "key"
}
""";
julia> parse_lazy_json(json)
LazyJSONDict with 6 entries:
"str" => "John Doe"
"num" => "30"
"array" => Any[1, 2, LazyJSONDict("a"=>3, "b"=>nothing)]
"bool" => false
"obj" => LazyJSONDict("a"=>1, "b"=>nothing)
"another" => "key"
julia> json = """{
"array": [1,2,3]
}
""";
array = []
parse_lazy_json(json) do data
for value in data["array"]
push!(array, value)
end
end
julia> array
3-element Vector{Any}:
1
2
3
YYJSON.LazyJSON.open_lazy_json
— Functionopen_lazy_json([f::Function], path::String; kw...)
open_lazy_json([f::Function], io::IO; kw...)
Reads a JSON file from a given path
or io
and parse it into a LazyJSONDict
or LazyJSONVector
.
When it's no longer needed, it should be closed with close
or use do
block syntax.
Keyword arguments
Similar to parse_json
.