| 39 | } |
| 40 | |
| 41 | public void test2() throws ReflectiveOperationException { |
| 42 | C c = JsonReader.local().buf("{a:{a:1,b:2}}").parse(C.class); |
| 43 | assertNotNull(c); |
| 44 | assertEquals(B.class, c.a.getClass()); |
| 45 | assertEquals(1, c.a.a); |
| 46 | assertEquals(2, ((B)c.a).b); |
| 47 | |
| 48 | c.a = new A(); |
| 49 | c = JsonReader.local().buf("{a:{a:3,b:4}}").parse(c); |
| 50 | assertNotNull(c); |
| 51 | assertEquals(A.class, c.a.getClass()); |
| 52 | assertEquals(3, c.a.a); |
| 53 | |
| 54 | c.a = null; |
| 55 | c = JsonReader.local().buf("{a:{a:5,b:6}}").parse(c); |
| 56 | assertNotNull(c); |
| 57 | assertEquals(A.class, c.a.getClass()); |
| 58 | assertEquals(5, c.a.a); |
| 59 | |
| 60 | Json.instance.getClassMeta(A.class).setParser((json, __, ___, ____, _____) -> json.parse(B.class)); |
| 61 | c.a = null; |
| 62 | c = JsonReader.local().buf("{a:{a:7,b:8}}").parse(c); |
| 63 | assertNotNull(c); |
| 64 | assertEquals(B.class, c.a.getClass()); |
| 65 | assertEquals(7, c.a.a); |
| 66 | assertEquals(8, ((B)c.a).b); |
| 67 | |
| 68 | B b = JsonReader.local().buf("{a:5 \n b:6}").parse(B.class); |
| 69 | assertNotNull(b); |
| 70 | assertEquals(B.class, b.getClass()); |
| 71 | assertEquals(5, b.a); |
| 72 | assertEquals(6, b.b); |
| 73 | } |
| 74 | |
| 75 | public void test3() { |
| 76 | C c = new C(); |