struct JSON::Any
Overview
JSON::Any
is a convenient wrapper around all possible JSON types (JSON::Type
)
and can be used for traversing dynamic or unknown JSON structures.
obj = JSON.parse(%({"access": [{"name": "mapping", "speed": "fast"}, {"name": "any", "speed": "slow"}]}))
obj["access"][1]["name"].as_s # => "any"
obj["access"][1]["speed"].as_s # => "slow"
Note that methods used to traverse a JSON structure, #[]
, #[]?
and #each
,
always return a JSON::Any
to allow further traversal. To convert them to String
,
Int32
, etc., use the "as_" methods, such as #as_s
, #as_i
, which perform
a type check against the raw underlying value. This means that invoking #as_s
when the underlying value is not a String will raise: the value won't automatically
be converted (parsed) to a String.
Included Modules
Defined in:
json/any.crClass Method Summary
-
.new(pull : JSON::PullParser)
Reads a
JSON::Any
value from the given pull parser. -
.new(raw : JSON::Type)
Creates a
JSON::Any
that wraps the givenJSON::Type
.
Instance Method Summary
-
#==(other : JSON::Any)
Returns true if both
self
and other's raw object are equal. -
#==(other)
Returns true if the raw object is equal to other.
-
#[](key : String) : JSON::Any
Assumes the underlying value is a Hash and returns the element with the given key.
-
#[](index : Int) : JSON::Any
Assumes the underlying value is an Array and returns the element at the given index.
-
#[]?(key : String) : JSON::Any | Nil
Assumes the underlying value is a Hash and returns the element with the given key, or nil if the key is not present.
-
#[]?(index : Int) : JSON::Any | Nil
Assumes the underlying value is an Array and returns the element at the given index, or nil if out of bounds.
-
#as_a : Array(Type)
Checks that the underlying value is
Array
, and returns its value. -
#as_a? : Array(Type) | Nil
Checks that the underlying value is
Array
, and returns its value. -
#as_bool : Bool
Checks that the underlying value is
Bool
, and returns its value. -
#as_bool? : Bool | Nil
Checks that the underlying value is
Bool
, and returns its value. - #as_f : Float64
- #as_f32 : Float32
- #as_f32? : Float32 | Nil
- #as_f? : Float64 | Nil
-
#as_h : Hash(String, Type)
Checks that the underlying value is
Hash
, and returns its value. -
#as_h? : Hash(String, Type) | Nil
Checks that the underlying value is
Hash
, and returns its value. - #as_i : Int32
- #as_i64 : Int64
- #as_i64? : Int64 | Nil
- #as_i? : Int32 | Nil
-
#as_nil : Nil
Checks that the underlying value is
Nil
, and returnsnil
. -
#as_s : String
Checks that the underlying value is
String
, and returns its value. -
#as_s? : String | Nil
Checks that the underlying value is
String
, and returns its value. - #each(&block)
-
#raw : JSON::Type
Returns the raw underlying value, a
JSON::Type
. - #size : Int
Instance methods inherited from module Enumerable(T)
all?all?(&block) all?, any?
any?(&block) any?, compact_map(&block) compact_map, count(item)
count(&block) count, cycle(&block)
cycle(n, &block) cycle, each(&block : T -> _) each, each_cons(count : Int, &block) each_cons, each_slice(count : Int, &block) each_slice, each_with_index(offset = 0, &block) each_with_index, each_with_object(obj, &block) each_with_object, find(if_none = nil, &block) find, first
first(count : Int) first, first? first?, flat_map(&block : T -> Array(U)) flat_map, grep(pattern) grep, group_by(&block : T -> U) group_by, in_groups_of(size : Int, filled_up_with : U = nil, &block)
in_groups_of(size : Int, filled_up_with : U = nil) in_groups_of, includes?(obj) includes?, index(obj)
index(&block) index, index_by(&block : T -> U) index_by, join(separator = "")
join(separator, io, &block)
join(separator = "", &block)
join(separator, io) join, map(&block : T -> U) map, map_with_index(&block : T, Int32 -> U) map_with_index, max max, max? max?, max_by(&block : T -> U) max_by, max_by?(&block : T -> U) max_by?, max_of(&block : T -> U) max_of, max_of?(&block : T -> U) max_of?, min min, min? min?, min_by(&block : T -> U) min_by, min_by?(&block : T -> U) min_by?, min_of(&block : T -> U) min_of, min_of?(&block : T -> U) min_of?, minmax minmax, minmax? minmax?, minmax_by(&block : T -> U) minmax_by, minmax_by?(&block : T -> U) minmax_by?, minmax_of(&block : T -> U) minmax_of, minmax_of?(&block : T -> U) minmax_of?, none?(&block)
none? none?, one?(&block) one?, partition(&block) partition, product(initial : Number, &block)
product
product(initial : Number)
product(&block) product, reduce(memo, &block)
reduce(&block) reduce, reject(&block : T -> ) reject, select(&block : T -> ) select, size size, skip(count : Int) skip, skip_while(&block) skip_while, sum
sum(initial)
sum(&block)
sum(initial, &block) sum, take_while(&block) take_while, to_a to_a, to_h to_h, to_set to_set
Instance methods inherited from struct Struct
==(other : self) : Bool
==,
hash : Int32
hash,
inspect(io : IO) : Nil
inspect,
to_s(io)
to_s
Instance methods inherited from struct Value
==(other)
==
Instance methods inherited from class Object
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other)===(other : YAML::Any)
===(other : JSON::Any) ===, =~(other) =~, class class, clone clone, crystal_type_id crystal_type_id, dup dup, hash hash, inspect
inspect(io : IO) inspect, itself itself, not_nil! not_nil!, tap(&block) tap, to_json to_json, to_pretty_json(io : IO)
to_pretty_json to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try
Class methods inherited from class Object
==(other : Class)
==,
===(other)
===,
cast(other) : self
cast,
from_json(string_or_io) : self
from_json,
from_yaml(string : String) : self
from_yaml,
hash
hash,
inspect(io)
inspect,
name : String
name,
to_s(io)
to_s,
|(other : U.class)
|
Class Method Detail
Instance Method Detail
Returns true if both self
and other's raw object are equal.
Assumes the underlying value is a Hash and returns the element with the given key. Raises if the underlying value is not a Hash.
Assumes the underlying value is an Array and returns the element at the given index. Raises if the underlying value is not an Array.
Assumes the underlying value is a Hash and returns the element with the given key, or nil if the key is not present. Raises if the underlying value is not a Hash.
Assumes the underlying value is an Array and returns the element at the given index, or nil if out of bounds. Raises if the underlying value is not an Array.
Checks that the underlying value is Array
, and returns its value. Raises otherwise.
Checks that the underlying value is Array
, and returns its value. Returns nil otherwise.
Checks that the underlying value is Bool
, and returns its value. Raises otherwise.
Checks that the underlying value is Bool
, and returns its value. Returns nil otherwise.
Checks that the underlying value is Float
, and returns its value as an Float32
. Returns nil otherwise.
Checks that the underlying value is Float
, and returns its value as an Float64
. Returns nil otherwise.
Checks that the underlying value is Hash
, and returns its value. Raises otherwise.
Checks that the underlying value is Hash
, and returns its value. Returns nil otherwise.
Checks that the underlying value is Nil
, and returns nil
. Raises otherwise.
Checks that the underlying value is String
, and returns its value. Raises otherwise.
Checks that the underlying value is String
, and returns its value. Returns nil otherwise.