Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
return val.chars.first
end
return val.chars.first
end
+ # byte?
+ if kind == "byte" then
+ var val = object.get_or_null("__val")
+ if not val isa Int then
+ errors.add new Error("Serialization Error: JSON `byte` object does not declare an integer `__val`.")
+ return object
+ end
+
+ return val.to_b
+ end
+
errors.add new Error("Deserialization Error: JSON object has an unknown `__kind`.")
return object
end
errors.add new Error("Deserialization Error: JSON object has an unknown `__kind`.")
return object
end
# be deserialized to their original form using `JsonDeserializer`.
# * Use references when an object has already been serialized so to not duplicate it.
# * Support cycles in references.
# be deserialized to their original form using `JsonDeserializer`.
# * Use references when an object has already been serialized so to not duplicate it.
# * Support cycles in references.
- # * Preserve the Nit `Char` type as an object because it does not exist in JSON.
+ # * Preserve the Nit `Char` and `Byte` types as special objects.
# * The generated JSON is standard and can be read by non-Nit programs.
# However, some Nit types are not represented by the simplest possible JSON representation.
# With the added metadata, it can be complex to read.
# * The generated JSON is standard and can be read by non-Nit programs.
# However, some Nit types are not represented by the simplest possible JSON representation.
# With the added metadata, it can be complex to read.
+redef class Byte
+ redef fun accept_json_serializer(v)
+ do
+ if v.plain_json then
+ to_i.accept_json_serializer v
+ else
+ v.stream.write "\{\"__kind\": \"byte\", \"__val\": "
+ to_i.accept_json_serializer v
+ v.stream.write "\}"
+ end
+ end
+end
+
redef class CString
redef fun accept_json_serializer(v) do to_s.accept_json_serializer(v)
end
redef class CString
redef fun accept_json_serializer(v) do to_s.accept_json_serializer(v)
end
redef class Bool super DirectSerializable end
redef class Char super DirectSerializable end
redef class Bool super DirectSerializable end
redef class Char super DirectSerializable end
+redef class Byte super DirectSerializable end
redef class Int super DirectSerializable end
redef class Float super DirectSerializable end
redef class CString super DirectSerializable end
redef class Int super DirectSerializable end
redef class Float super DirectSerializable end
redef class CString super DirectSerializable end