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. There are also nil-able variants (#as_i?, #as_s?, ...), which return nil when the underlying value type won't match.

Defined in:

json.cr

Instance Method Summary

Instance Method Detail

def [](path : Enumerable) : JSON::Any #

Returns the value corresponding to the path. If not found, raise.


[View source]
def []=(key : Int, value : JSON::Any) #

Sets the value of key to the given value.


[View source]
def []=(path : Enumerable, value : JSON::Any) : JSON::Any #

Sets the value of key to the given value.


[View source]
def []=(key : String, value : Any) #

Sets the value of key to the given value.


[View source]
def []?(path : Enumerable) : JSON::Any | Nil #

Returns the value corresponding to the path. If not found, returns nil.


[View source]
def delete(index : Int) #

Deletes the element at the given index.


[View source]
def delete(path : Enumerable) : JSON::Any #

Removes the element corresponding to the path.


[View source]
def delete(key : String) #

Deletes the key-value pair.


[View source]