return value
end
- # char? TODO
+ # char?
+ if kind == "char" then
+ assert object.keys.has("__val")
+ var val = object["__val"]
+ assert val isa String
+
+ if val.length != 1 then print "Error: expected a single char when deserializing '{val}'."
+
+ return val.chars.first
+ end
print "Malformed Json string: unexpected Json Object kind '{kind}'"
abort
end
redef class Char
- redef fun serialize_to_json(v) do v.stream.write("'{to_s}'")
+ redef fun serialize_to_json(v) do v.stream.write "\{\"__kind\": \"char\", \"__val\": \"{to_s.to_json_s}\"\}"
end
redef class String
redef fun serialize_to_json(v) do v.stream.write("\"{to_json_s}\"")
private fun to_json_s: String do return self.replace("\\", "\\\\").
- replace("\"", "\\\"").replace("\b", "\\b").replace("/", "\\/").
+ replace("\"", "\\\"").replace("/", "\\/").
replace("\n", "\\n").replace("\r", "\\r").replace("\t", "\\t")
# FIXME add support for unicode char when supported by Nit strings
# FIXME add support for \f! # .replace("\f", "\\f")
+ # FIXME add support for \b .replace("\b", "\\b")
end
redef class NativeString