redef fun serialize_to_json(v) do to_s.serialize_to_json(v)
end
+redef class Array[E]
+ redef fun serialize_to_json(v) do
+ v.stream.write "["
+ var is_first = true
+ for e in self do
+ if is_first then
+ is_first = false
+ else v.stream.write(", ")
+
+ if not v.try_to_serialize(e) then
+ v.warn("element of type {e.class_name} is not serializable.")
+ end
+ end
+ v.stream.write "]"
+ end
+end
redef class Float super DirectSerializable end
redef class NativeString super DirectSerializable end
redef class String super DirectSerializable end
+redef class Array[E] super Serializable end
<A: true a 0.123 1234 asdf false>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}
+{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null]}
# Nit:
<B: <A: false b 123.123 2345 hjkl false> 1111 qwer>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer"}
+{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "qwer"}
# Nit:
<C: <A: true a 0.123 1234 asdf false> <B: <A: false b 123.123 2345 hjkl false> 1111 qwer>>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
+{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null]}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
# Nit:
<D: <B: <A: false b 123.123 2345 new line ->
<- false> 1111 f"\r\/> true>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}}
+{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}}
<A: true a 0.123 1234 asdf false>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}
+{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null]}
# Nit:
<B: <A: false b 123.123 2345 hjkl false> 1111 qwer>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer"}
+{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "qwer"}
# Nit:
<C: <A: true a 0.123 1234 asdf false> <B: <A: false b 123.123 2345 hjkl false> 1111 qwer>>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
+{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null]}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
# Nit:
<D: <B: <A: false b 123.123 2345 new line ->
<- false> 1111 f"\r\/> true>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}}
+{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}}
<A: true a 0.123 1234 asdf false>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "iii": 6789, "sss": "redef"}
+{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef"}
# Nit:
<B: <A: false b 123.123 2345 hjkl false> 1111 qwer>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer"}
+{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer"}
# Nit:
<C: <A: true a 0.123 1234 asdf false> <B: <A: false b 123.123 2345 hjkl false> 1111 qwer>>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "iii": 6789, "sss": "redef"}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
+{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef"}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer"}, "aa": {"__kind": "ref", "__id": 1}}
# Nit:
<D: <B: <A: false b 123.123 2345 new line ->
<- false> 1111 f"\r\/> true>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}}
+{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef", "ii": 1111, "ss": "\tf\"\r\\\/", "d": {"__kind": "ref", "__id": 0}}
<A: true a 0.123 1234 asdf false>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}
+{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null]}
# Nit:
<B: <A: false b 123.123 2345 hjkl false> 1111 qwer>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}
+{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}
# Nit:
<C: <A: true a 0.123 1234 asdf false> <B: <A: false b 123.123 2345 hjkl false> 1111 qwer>>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}, "aa": {"__kind": "ref", "__id": 1}}
+{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null]}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}, "aa": {"__kind": "ref", "__id": 1}}
# Nit:
<D: <B: <A: false b 123.123 2345 new line ->
<- false> 1111 f"\r\/> true>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "ii": 1111, "ss": "\tf\"\r\\\/", "ffff": 6.789, "bbbb": false, "d": {"__kind": "ref", "__id": 0}}
+{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "array": [88, "hello", null], "ii": 1111, "ss": "\tf\"\r\\\/", "ffff": 6.789, "bbbb": false, "d": {"__kind": "ref", "__id": 0}}
<A: true a 0.123 1234 asdf false>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "iii": 6789, "sss": "redef"}
+{"__kind": "obj", "__id": 0, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef"}
# Nit:
<B: <A: false b 123.123 2345 hjkl false> 1111 qwer>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}
+{"__kind": "obj", "__id": 0, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}
# Nit:
<C: <A: true a 0.123 1234 asdf false> <B: <A: false b 123.123 2345 hjkl false> 1111 qwer>>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "iii": 6789, "sss": "redef"}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}, "aa": {"__kind": "ref", "__id": 1}}
+{"__kind": "obj", "__id": 0, "__class": "C", "a": {"__kind": "obj", "__id": 1, "__class": "A", "b": true, "c": 'a', "f": 0.123, "i": 1234, "s": "asdf", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef"}, "b": {"__kind": "obj", "__id": 2, "__class": "B", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "hjkl", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef", "ii": 1111, "ss": "qwer", "ffff": 6.789, "bbbb": false}, "aa": {"__kind": "ref", "__id": 1}}
# Nit:
<D: <B: <A: false b 123.123 2345 new line ->
<- false> 1111 f"\r\/> true>
# Json:
-{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "iii": 6789, "sss": "redef", "ii": 1111, "ss": "\tf\"\r\\\/", "ffff": 6.789, "bbbb": false, "d": {"__kind": "ref", "__id": 0}}
+{"__kind": "obj", "__id": 0, "__class": "D", "b": false, "c": 'b', "f": 123.123, "i": 2345, "s": "new line ->\n<-", "n": null, "array": [88, "hello", null], "iii": 6789, "sss": "redef", "ii": 1111, "ss": "\tf\"\r\\\/", "ffff": 6.789, "bbbb": false, "d": {"__kind": "ref", "__id": 0}}
var i: Int
var s: String
var n: nullable Int
+ var array: Array[nullable Object] = new Array[nullable Object].with_items(88, "hello", null)
init(b: Bool, c: Char, f: Float, i: Int, s: String, n: nullable Int)
do