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 aJSON::Any to allow further traversal. To convert them toString,
Int32, etc., use theas_ 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 aString. There are also nil-able variants (#as_i?,#as_s?, ...),
which returnnil when the underlying value type won't match.
Defined in:
json/any.crConstructors
-
.new(raw : Type)
Creates a
JSON::Anythat wraps the given value. -
.new(raw : Int) : self
Creates a
JSON::Anythat wraps the given value. -
.new(raw : Float) : self
Creates a
JSON::Anythat wraps the given value. -
.new(pull : JSON::PullParser) : self
Reads a
JSON::Anyvalue from the given pull parser.
Instance Method Summary
-
#==(other : JSON::Any)
Returns
trueif bothselfandother's raw object are equal. -
#==(other)
Returns
trueif the raw object is equal toother. -
#[](index : Int) : JSON::Any
Assumes the underlying value is an
Arrayand returns the element at the given index. -
#[](key : String) : JSON::Any
Assumes the underlying value is a
Hashand returns the element with the given key. -
#[]?(index : Int) : JSON::Any | Nil
Assumes the underlying value is an
Arrayand returns the element at the given index, ornilif out of bounds. -
#[]?(key : String) : JSON::Any | Nil
Assumes the underlying value is a
Hashand returns the element with the given key, ornilif the key is not present. -
#as_a : Array(JSON::Any)
Checks that the underlying value is
Array, and returns its value. -
#as_a? : Array(JSON::Any) | 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, JSON::Any)
Checks that the underlying value is
Hash, and returns its value. -
#as_h? : Hash(String, JSON::Any) | 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. - #clone : JSON::Any
-
#dig(index_or_key : Int | String, *subkeys : Int | String) : JSON::Any
Traverses the depth of a structure and returns the value, otherwise raises.
-
#dig?(index_or_key : Int | String, *subkeys : Int | String) : JSON::Any | Nil
Traverses the depth of a structure and returns the value.
- #dup
- #hash(hasher)
-
#inspect(io : IO) : Nil
Appends this struct's name and instance variables names and values to the given IO.
-
#raw : Type
Returns the raw underlying value.
- #size : Int
-
#to_s(io : IO) : Nil
Same as
#inspect(io). - #to_yaml(yaml : YAML::Nodes::Builder) : Nil
Instance methods inherited from struct Struct
==(other : YAML::Any)==(other) : Bool ==, hash(hasher) hash, inspect(io : IO) : Nil inspect, pretty_print(pp) : Nil pretty_print, to_s(io : IO) : Nil to_s
Class methods inherited from struct Struct
pre_initialize(address : Pointer) : Nil
pre_initialize
Instance methods inherited from struct Value
==(other : Log::Metadata::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?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
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) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io : String | IO, root : String)from_json(string_or_io : String | IO) from_json, from_yaml(string_or_io : String | IO) from_yaml
Macros inherited from class Object
class_getter(*names, &block)
class_getter,
class_getter!(*names)
class_getter!,
class_getter?(*names, &block)
class_getter?,
class_property(*names, &block)
class_property,
class_property!(*names)
class_property!,
class_property?(*names, &block)
class_property?,
class_setter(*names)
class_setter,
def_clone
def_clone,
def_equals(*fields)
def_equals,
def_equals_and_hash(*fields)
def_equals_and_hash,
def_hash(*fields)
def_hash,
delegate(*methods, to object)
delegate,
forward_missing_to(delegate)
forward_missing_to,
getter(*names, &block)
getter,
getter!(*names)
getter!,
getter?(*names, &block)
getter?,
property(*names, &block)
property,
property!(*names)
property!,
property?(*names, &block)
property?,
setter(*names)
setter
Constructor Detail
Instance Method Detail
Assumes the underlying value is anArray and returns the element
at the given index.
Raises if the underlying value is not anArray.
Assumes the underlying value is aHash and returns the element
with the given key.
Raises if the underlying value is not aHash.
Assumes the underlying value is anArray and returns the element
at the given index, ornil if out of bounds.
Raises if the underlying value is not anArray.
Assumes the underlying value is aHash and returns the element
with the given key, ornil if the key is not present.
Raises if the underlying value is not aHash.
Checks that the underlying value isFloat (orInt), and returns its value as anFloat64.
Raises otherwise.
Checks that the underlying value isFloat (orInt), and returns its value as anFloat32.
Raises otherwise.
Checks that the underlying value isFloat (orInt), and returns its value as anFloat32.
Returnsnil otherwise.
Checks that the underlying value isFloat (orInt), and returns its value as anFloat64.
Returnsnil otherwise.
Traverses the depth of a structure and returns the value, otherwise raises.
Traverses the depth of a structure and returns the value.
Returnsnil if not found.
Appends this struct's name and instance variables names and values to the given IO.
struct Point
def initialize(@x : Int32, @y : Int32)
end
end
p1 = Point.new 1, 2
p1.to_s # "Point(@x=1, @y=2)"
p1.inspect # "Point(@x=1, @y=2)"