Module: Fauna::FaunaJson
- Defined in:
- lib/fauna/json.rb
Overview
:nodoc:
Class Method Summary collapse
- .deserialize(obj) ⇒ Object
- .json_load(body) ⇒ Object
- .json_load_or_nil(body) ⇒ Object
- .serialize(value) ⇒ Object
- .to_json(value) ⇒ Object
- .to_json_pretty(value) ⇒ Object
Class Method Details
.deserialize(obj) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/fauna/json.rb', line 11 def self.deserialize(obj) if obj.is_a?(Hash) if obj.key? :@ref Ref.new obj[:@ref] elsif obj.key? :@set SetRef.new deserialize(obj[:@set]) elsif obj.key? :@obj deserialize(obj[:@obj]) elsif obj.key? :@ts Time.iso8601 obj[:@ts] elsif obj.key? :@date Date.iso8601 obj[:@date] elsif obj.key? :@bytes Bytes.from_base64 obj[:@bytes] else Hash[obj.collect { |k, v| [k, deserialize(v)] }] end elsif obj.is_a?(Array) obj.collect { |val| deserialize(val) } else obj end end |
.json_load(body) ⇒ Object
35 36 37 |
# File 'lib/fauna/json.rb', line 35 def self.json_load(body) JSON.load body, nil, max_nesting: false, symbolize_names: true end |
.json_load_or_nil(body) ⇒ Object
39 40 41 42 43 |
# File 'lib/fauna/json.rb', line 39 def self.json_load_or_nil(body) json_load body rescue JSON::ParserError nil end |
.serialize(value) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/fauna/json.rb', line 45 def self.serialize(value) if value.is_a? Time # 9 means: include nanoseconds in encoding { :@ts => value.iso8601(9) } elsif value.is_a? Date { :@date => value.iso8601 } elsif value.is_a? Hash Hash[value.collect { |k, v| [k, serialize(v)] }] elsif value.is_a? Array value.collect { |val| serialize(val) } elsif value.respond_to? :to_hash serialize(value.to_hash) else value end end |
.to_json(value) ⇒ Object
3 4 5 |
# File 'lib/fauna/json.rb', line 3 def self.to_json(value) serialize(value).to_json end |
.to_json_pretty(value) ⇒ Object
7 8 9 |
# File 'lib/fauna/json.rb', line 7 def self.to_json_pretty(value) JSON.pretty_generate serialize(value) end |