Skip to content

struct JSON::Any
inherits Struct

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.

Class methods

.new(raw : Type)

Creates a JSON::Any that wraps the given value.

View source

.new(pull : JSON::PullParser)

Reads a JSON::Any value from the given pull parser.

View source

Methods

#==(other)

Returns true if the raw object is equal to other.

View source

#==(other : JSON::Any)

Returns true if both self and other's raw object are equal.

View source

#[](index : Int) : JSON::Any

Assumes the underlying value is an Array and returns the element at the given index. Raises if the underlying value is not an Array.

View source

#[](key : String) : JSON::Any

Assumes the underlying value is a Hash and returns the element with the given key. Raises if the underlying value is not a Hash.

View source

#[]?(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. Raises if the underlying value is not an Array.

View source

#[]?(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. Raises if the underlying value is not a Hash.

View source

#as_a : Array(Any)

Checks that the underlying value is Array, and returns its value. Raises otherwise.

View source

#as_a? : Array(Any)?

Checks that the underlying value is Array, and returns its value. Returns nil otherwise.

View source

#as_bool : Bool

Checks that the underlying value is Bool, and returns its value. Raises otherwise.

View source

#as_bool? : Bool?

Checks that the underlying value is Bool, and returns its value. Returns nil otherwise.

View source

#as_f : Float64

Checks that the underlying value is Float, and returns its value as an Float64. Raises otherwise.

View source

#as_f32 : Float32

Checks that the underlying value is Float, and returns its value as an Float32. Raises otherwise.

View source

#as_f32? : Float32?

Checks that the underlying value is Float, and returns its value as an Float32. Returns nil otherwise.

View source

#as_f? : Float64?

Checks that the underlying value is Float, and returns its value as an Float64. Returns nil otherwise.

View source

#as_h : Hash(String, Any)

Checks that the underlying value is Hash, and returns its value. Raises otherwise.

View source

#as_h? : Hash(String, Any)?

Checks that the underlying value is Hash, and returns its value. Returns nil otherwise.

View source

#as_i : Int32

Checks that the underlying value is Int, and returns its value as an Int32. Raises otherwise.

View source

#as_i64 : Int64

Checks that the underlying value is Int, and returns its value as an Int64. Raises otherwise.

View source

#as_i64? : Int64?

Checks that the underlying value is Int, and returns its value as an Int64. Returns nil otherwise.

View source

#as_i? : Int32?

Checks that the underlying value is Int, and returns its value as an Int32. Returns nil otherwise.

View source

#as_nil : Nil

Checks that the underlying value is Nil, and returns nil. Raises otherwise.

View source

#as_s : String

Checks that the underlying value is String, and returns its value. Raises otherwise.

View source

#as_s? : String?

Checks that the underlying value is String, and returns its value. Returns nil otherwise.

View source

#clone

Returns a new JSON::Any instance with the raw value cloneed.

View source

#dig(index_or_key : String | Int, *subkeys) : JSON::Any

Traverses the depth of a structure and returns the value, otherwise raises.

View source

#dig?(index_or_key : String | Int, *subkeys) : JSON::Any?

Traverses the depth of a structure and returns the value. Returns nil if not found.

View source

#dup

Returns a new JSON::Any instance with the raw value duped.

View source

#hash(hasher)

View source

#raw : Type

Returns the raw underlying value.

View source

#size : Int

Assumes the underlying value is an Array or Hash and returns its size. Raises if the underlying value is not an Array or Hash.

View source