Sha256: 914fd86e6ac66c3a28b734d5c7a6b3f41e8b48ef412a4b309dcc25c19c4cffb2
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
begin require 'oj' rescue LoadError require 'symbolizer' require 'json' end class Freddy class Payload def self.parse(payload) return {} if payload == 'null' json_handler.parse(payload) end def self.dump(payload) json_handler.dump(payload) end def self.json_handler @_json_handler ||= defined?(Oj) ? OjAdapter : JsonAdapter end class OjAdapter def self.parse(payload) Oj.strict_load(payload, symbol_keys: true) end def self.dump(payload) Oj.dump(payload, mode: :compat, time_format: :xmlschema) end end class JsonAdapter def self.parse(payload) # MRI has :symbolize_keys, but JRuby does not. Not adding it at the # moment. Symbolizer.symbolize(JSON.parse(payload)) end def self.dump(payload) JSON.dump(serialize_time_objects(payload)) end def self.serialize_time_objects(object) if object.is_a?(Hash) object.reduce({}) do |hash, (key, value)| hash.merge(key => serialize_time_objects(value)) end elsif object.is_a?(Array) object.map(&method(:serialize_time_objects)) elsif object.is_a?(Time) || object.is_a?(Date) object.iso8601 else object end end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
freddy-jruby-1.0.0 | lib/freddy/payload.rb |
freddy-1.0.0 | lib/freddy/payload.rb |