struct JSON::Any
Overview
JSON::Any is a convenient wrapper around all possible JSON types (JSON::Any::Type) and can be used for traversing dynamic or unknown JSON structures.
require "json"
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 #[]?, 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.
Defined in:
json/any.cr Constructors
Instance Method Summary
- #==(other)
Returns true if the raw object is equal to other.
- #==(other : JSON::Any)
Returns true if both self and other's raw object are equal.
- #[](index : Int) : JSON::Any
Assumes the underlying value is an Array and returns the element at the given index.
- #[](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, or nil if out of bounds.
- #[]?(key : String) : JSON::Any?
Assumes the underlying value is a Hash and returns the element with the given key, or nil if the key is not present.
- #as_a : Array(Any)
Checks that the underlying value is Array, and returns its value.
- #as_a? : Array(Any)?
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?
Checks that the underlying value is Bool, and returns its value.
- #as_f : Float64
Checks that the underlying value is Float, and returns its value as an Float64.
- #as_f32 : Float32
Checks that the underlying value is Float, and returns its value as an Float32.
- #as_f32? : Float32?
Checks that the underlying value is Float, and returns its value as an Float32.
- #as_f? : Float64?
Checks that the underlying value is Float, and returns its value as an Float64.
- #as_h : Hash(String, Any)
Checks that the underlying value is Hash, and returns its value.
- #as_h? : Hash(String, Any)?
Checks that the underlying value is Hash, and returns its value.
- #as_i : Int32
Checks that the underlying value is Int, and returns its value as an Int32.
- #as_i64 : Int64
Checks that the underlying value is Int, and returns its value as an Int64.
- #as_i64? : Int64?
Checks that the underlying value is Int, and returns its value as an Int64.
- #as_i? : Int32?
Checks that the underlying value is Int, and returns its value as an Int32.
- #as_nil : Nil
Checks that the underlying value is Nil, and returns nil.
- #as_s : String
Checks that the underlying value is String, and returns its value.
- #as_s? : String?
Checks that the underlying value is String, and returns its value.
- #clone
Returns a new JSON::Any instance with the #raw value #cloneed.
- #dig(key : String | Int, *subkeys)
Traverses the depth of a structure and returns the value, otherwise raises.
- #dig?(key : String | Int, *subkeys)
Traverses the depth of a structure and returns the value.
- #dup
Returns a new JSON::Any instance with the #raw value #duped.
- #hash(hasher)
- #raw : Type
Returns the raw underlying value.
- #size : Int
Assumes the underlying value is an Array or Hash and returns its size.
- #to_yaml(yaml : YAML::Nodes::Builder)
Instance methods inherited from struct Struct
==(other) : Bool ==,
hash(hasher) hash,
inspect(io : IO) : Nil inspect,
pretty_print(pp) : Nil pretty_print,
to_s(io : IO) : Nil to_s Instance methods inherited from struct Value
==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==,
dup dup Instance methods inherited from class Object
! : Bool !,
!=(other) !=,
!~(other) !~,
==(other) ==,
===(other : JSON::Any)
===(other : YAML::Any)
===(other) ===,
=~(other) =~,
as(type : Class) as,
as?(type : Class) as?,
class class,
dup dup,
hash(hasher)
hash hash,
in?(*values : Object) : Bool
in?(collection) : Bool in?,
inspect : String
inspect(io : IO) : Nil inspect,
is_a?(type : Class) : Bool is_a?,
itself itself,
nil? : Bool nil?,
not_nil! not_nil!,
pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect,
pretty_print(pp : PrettyPrint) : Nil pretty_print,
responds_to?(name : Symbol) : Bool responds_to?,
tap(&) tap,
to_json(io : IO)
to_json to_json,
to_pretty_json(io : IO, indent : String = " ")
to_pretty_json(indent : String = " ") to_pretty_json,
to_s : String
to_s(io : IO) : Nil to_s,
to_yaml(io : IO)
to_yaml to_yaml,
try(&) try,
unsafe_as(type : T.class) forall T unsafe_as Class methods inherited from class Object
from_json(string_or_io, root : String)
from_json(string_or_io) from_json,
from_yaml(string_or_io : String | IO) from_yaml Constructor Detail
Creates a JSON::Any that wraps the given value.
Reads a JSON::Any value from the given pull parser.
Instance Method Detail
def ==(other)Source
Returns true if the raw object is equal to other.
Returns true if both self and other's raw object are equal.
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. 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.
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.
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 Float64. Raises otherwise.
Checks that the underlying value is Float, and returns its value as an Float32. Raises 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 Int, and returns its value as an Int32. Raises otherwise.
Checks that the underlying value is Int, and returns its value as an Int64. Raises otherwise.
Checks that the underlying value is Int, and returns its value as an Int64. Returns nil otherwise.
Checks that the underlying value is Int, and returns its value as an Int32. 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.
Returns a new JSON::Any instance with the #raw value #cloneed.
Traverses the depth of a structure and returns the value, otherwise raises.
Traverses the depth of a structure and returns the value. Returns nil if not found.
Returns a new JSON::Any instance with the #raw value #duped.
Returns the raw underlying value.
Assumes the underlying value is an Array or Hash and returns its size. Raises if the underlying value is not an Array or Hash.