package com.alibaba.json.bvt.parser.deser; import junit.framework.TestCase; import org.junit.Assert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotation.JSONType; import com.alibaba.fastjson.parser.ParserConfig; public class AbstractSerializeTest2 extends TestCase { protected void setUp() throws Exception { ParserConfig.global.addAccept("com.alibaba.json.bvt.bug.AbstractSerializeTest2"); ParserConfig.global.addAccept("com.alibaba.json.bvt.parser.deser.AbstractSerializeTest2"); } protected void tearDown() throws Exception { ParserConfig.getGlobalInstance().putDeserializer(A.class, null); } public void test_mapping_0() throws Exception { String text = "{\"@type\":\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest2$A\"}"; B b = (B) JSON.parse(text); Assert.assertNotNull(b); } public void test_mapping_1() throws Exception { String text = "{\"@type\":\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest2$A\",\"id\":123}"; B b = (B) JSON.parse(text); Assert.assertNotNull(b); Assert.assertEquals(123, b.getId()); } public void test_mapping_2() throws Exception { String text = "{\"@type\":\"com.alibaba.json.bvt.parser.deser.AbstractSerializeTest2$A\",\"id\":234,\"name\":\"abc\"}"; B b = (B) JSON.parse(text); Assert.assertNotNull(b); Assert.assertEquals(234, b.getId()); Assert.assertEquals("abc", b.getName()); } public void test_mapping_group() throws Exception { String text = "{\"a\":{\"id\":234,\"name\":\"abc\"}}"; G g = JSON.parseObject(text, G.class); Assert.assertTrue(g.getA() instanceof B); } public static class G { private A a; public A getA() { return a; } public void setA(A a) { this.a = a; } } @JSONType(mappingTo = B.class) public static abstract class A { private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } } public static class B extends A { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } }