JSON::Any

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.cr

Class Method Summary

Instance Method Summary

Instance methods inherited from module Enumerable(self)

all?(&block)
all? all?
, any?(&block)
any? any?
, chunks(&block : T -> U) forall U chunks, compact_map(&block) compact_map, count(&block)
count(item) count
, cycle(n, &block)
cycle(&block) cycle
, each(&block : T -> _) each, each_cons(count : Int, reuse = false, &block) each_cons, each_slice(count : Int, reuse = false, &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(count : Int)
first first
, first? first?, flat_map(&block : T -> Array(U) | Iterator(U) | U) forall U flat_map, grep(pattern) grep, group_by(&block : T -> U) forall U group_by, in_groups_of(size : Int, filled_up_with : U = nil) forall U
in_groups_of(size : Int, filled_up_with : U = nil, reuse = false, &block) forall U in_groups_of
, includes?(obj) includes?, index(&block)
index(obj) index
, index_by(&block : T -> U) forall U index_by, join(separator, io)
join(separator = "")
join(separator, io, &block)
join(separator = "", &block) join
, map(&block : T -> U) forall U map, map_with_index(&block : T, Int32 -> U) forall U map_with_index, max max, max? max?, max_by(&block : T -> U) forall U max_by, max_by?(&block : T -> U) forall U max_by?, max_of(&block : T -> U) forall U max_of, max_of?(&block : T -> U) forall U max_of?, min min, min? min?, min_by(&block : T -> U) forall U min_by, min_by?(&block : T -> U) forall U min_by?, min_of(&block : T -> U) forall U min_of, min_of?(&block : T -> U) forall U min_of?, minmax minmax, minmax? minmax?, minmax_by(&block : T -> U) forall U minmax_by, minmax_by?(&block : T -> U) forall U minmax_by?, minmax_of(&block : T -> U) forall U minmax_of, minmax_of?(&block : T -> U) forall U minmax_of?, none?(&block)
none? none?
, one?(&block) one?, partition(&block) partition, product(&block)
product(initial : Number, &block)
product
product(initial : Number) product
, reduce(&block)
reduce(memo, &block) reduce
, reject(&block : T -> ) reject, select(&block : T -> ) select, size size, skip(count : Int) skip, skip_while(&block) skip_while, sum(initial)
sum
sum(initial, &block)
sum(&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, pretty_print(pp) : Nil pretty_print, to_s(io) to_s

Instance methods inherited from struct Value

==(other) ==, dup dup

Instance methods inherited from class Object

!=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)
===(other : YAML::Any)
===(other) ===
, =~(other) =~, class class, dup dup, hash hash, inspect(io : IO)
inspect inspect
, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json
, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") 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

from_json(string_or_io, root : String) : self
from_json(string_or_io) : self from_json
, from_yaml(string_or_io) : self from_yaml

Class Method Detail

def self.new(raw : JSON::Type)Source

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

def self.new(pull : JSON::PullParser)Source

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.

def ==(other : JSON::Any)Source

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

def [](index : Int) : JSON::AnySource

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

def [](key : String) : JSON::AnySource

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

def []?(index : Int) : JSON::Any?Source

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.

def []?(key : String) : JSON::Any?Source

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.

def as_a : Array(Type)Source

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

def as_a? : Array(Type)?Source

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

def as_bool : BoolSource

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

def as_bool? : Bool?Source

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

def as_f : Float64Source

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

def as_f32 : Float32Source

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

def as_f32? : Float32?Source

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

def as_f? : Float64?Source

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

def as_h : Hash(String, Type)Source

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

def as_h? : Hash(String, Type)?Source

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

def as_i : Int32Source

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

def as_i64 : Int64Source

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

def as_i64? : Int64?Source

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

def as_i? : Int32?Source

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

def as_nil : NilSource

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

def as_s : StringSource

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

def as_s? : String?Source

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

def each(&block)Source

Assumes the underlying value is an Array or Hash and yields each of the elements or key/values, always as JSON::Any- Raises if the underlying value is not an Array or Hash.

def raw : JSON::TypeSource

Returns the raw underlying value, a JSON::Type.

def size : IntSource

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

© 2012–2017 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.22.0/JSON/Any.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部