Module: Jsoner
- Defined in:
- lib/emery/jsoner.rb
Defined Under Namespace
Modules: DateSerializer, DateTimeSerializer, FloatSerializer
Constant Summary
collapse
- @@serializers =
{
Float => FloatSerializer,
Date => DateSerializer,
DateTime => DateTimeSerializer
}
Class Method Summary
collapse
Class Method Details
.add_serializer(type, serializer) ⇒ Object
174
175
176
|
# File 'lib/emery/jsoner.rb', line 174
def self.add_serializer(type, serializer)
@@serializers[type] = serializer
end
|
.deserialize(type, json_value) ⇒ Object
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
# File 'lib/emery/jsoner.rb', line 183
def Jsoner.deserialize(type, json_value)
begin
if type.methods.include? :jsoner_deserialize
return type.jsoner_deserialize(json_value)
elsif @@serializers.include? type
return @@serializers[type].jsoner_deserialize(json_value)
else
if ![String, Float, Integer, TrueClass, FalseClass, NilClass].include? type
raise JsonerError.new("Type #{type} is not supported in Jsoner deserialization")
end
return T.check(type, json_value)
end
rescue StandardError => error
raise JsonerError.new(error.message)
end
end
|
.from_json(type, json) ⇒ Object
178
179
180
181
|
# File 'lib/emery/jsoner.rb', line 178
def Jsoner.from_json(type, json)
data = JSON.parse(json)
return deserialize(type, data)
end
|
.serialize(type, value) ⇒ Object
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
# File 'lib/emery/jsoner.rb', line 204
def Jsoner.serialize(type, value)
begin
if type.methods.include? :jsoner_serialize
return type.jsoner_serialize(value)
elsif @@serializers.include? type
return @@serializers[type].jsoner_serialize(value)
else
if ![String, Float, Integer, TrueClass, FalseClass, NilClass].include? type
raise JsonerError.new("Type #{type} is not supported in Jsoner serialization")
end
return T.check(type, value)
end
rescue StandardError => error
raise JsonerError.new(error.message)
end
end
|
.to_json(type, value) ⇒ Object
200
201
202
|
# File 'lib/emery/jsoner.rb', line 200
def Jsoner.to_json(type, value)
JSON.dump(serialize(type, value))
end
|