diff --git a/lib/std/collections/object.c3 b/lib/std/collections/object.c3 index 4fe7db94d..380fee9c3 100644 --- a/lib/std/collections/object.c3 +++ b/lib/std/collections/object.c3 @@ -274,6 +274,14 @@ fn Object* Object.get_at(&self, usz index) return self.array.get(index); } +/** + * @require self.is_indexable() + **/ +fn usz Object.get_len(&self) +{ + return self.array.len(); +} + /** * @require self.is_indexable() **/ diff --git a/test/unit/stdlib/encoding/json.c3 b/test/unit/stdlib/encoding/json.c3 index 8b0b9549b..174cebef0 100644 --- a/test/unit/stdlib/encoding/json.c3 +++ b/test/unit/stdlib/encoding/json.c3 @@ -6,9 +6,13 @@ import std::encoding::json; fn void! simple_test() { ByteReader reader; - reader.init(`{ "b": 123, "c": [ { "d": 66 }, null, "hello", false ] }`); + reader.init(`{ "b": 123, "c": [ { "d": 66 }, null, "hello", false, { "id": "xyz" } ] }`); Object* o = json::parse(reader.as_stream())!; assert(o.get_int("b")! == 123); + assert(o.get("c").get_len()! == 5); assert(o.get("c").get_at(0).get_int("d")! == 66); assert(o.get("c").get_at(1).is_null()!); + assert(o.get("c").get_string_at(2)! == "hello"); + assert(o.get("c").get_bool_at(3)! == false); + assert(o.get("c").get_at(4).get_string("id")! == "xyz"); }