Module: NatsWork::Serializer
- Defined in:
- lib/natswork/serializer.rb
Class Method Summary collapse
- .dump(object) ⇒ Object
- .load(json_string, symbolize_keys: true) ⇒ Object
- .prepare_for_json(object) ⇒ Object
- .safe_dump(object) ⇒ Object
- .safe_load(json_string, symbolize_keys: true) ⇒ Object
Class Method Details
.dump(object) ⇒ Object
13 14 15 16 17 |
# File 'lib/natswork/serializer.rb', line 13 def dump(object) JSON.generate(prepare_for_json(object)) rescue StandardError => e raise SerializationError, "Cannot serialize object: #{e.}" end |
.load(json_string, symbolize_keys: true) ⇒ Object
19 20 21 22 23 |
# File 'lib/natswork/serializer.rb', line 19 def load(json_string, symbolize_keys: true) JSON.parse(json_string.to_s, symbolize_names: symbolize_keys) rescue JSON::ParserError => e raise SerializationError, "Failed to parse JSON: #{e.}" end |
.prepare_for_json(object) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/natswork/serializer.rb', line 39 def prepare_for_json(object) case object when Hash object.transform_keys(&:to_s).transform_values { |v| prepare_for_json(v) } when Array object.map { |item| prepare_for_json(item) } when Symbol object.to_s when Time object.utc.iso8601 when Date object.iso8601 when DateTime object.to_time.utc.iso8601 when String, Numeric, TrueClass, FalseClass, NilClass object else if object.respond_to?(:to_h) prepare_for_json(object.to_h) elsif object.respond_to?(:as_json) prepare_for_json(object.as_json) else raise SerializationError, "Cannot serialize object of type #{object.class}" end end end |
.safe_dump(object) ⇒ Object
25 26 27 28 29 |
# File 'lib/natswork/serializer.rb', line 25 def safe_dump(object) dump(object) rescue SerializationError nil end |
.safe_load(json_string, symbolize_keys: true) ⇒ Object
31 32 33 34 35 |
# File 'lib/natswork/serializer.rb', line 31 def safe_load(json_string, symbolize_keys: true) load(json_string, symbolize_keys: symbolize_keys) rescue SerializationError nil end |