package com.alibaba.json.bvt.bug; import java.lang.reflect.Type; import junit.framework.TestCase; import org.junit.Test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.util.TypeUtils; public class Issue96 extends TestCase { public void test_for_issue() throws Exception { Page<Sub> page = new Page<Sub>(new Sub(1)); Type type = new TypeReference<Page<Sub>>() { }.getType(); // this is ok Page<Sub> page1 = JSON.parseObject(JSON.toJSONString(page), type); System.out.println(page1.sub.getClass()); } public void xx_testCast() { Page<Sub> page = new Page<Sub>(new Sub(1)); Type type = new TypeReference<Page<Sub>>() { }.getType(); ParserConfig parserconfig = ParserConfig.getGlobalInstance(); // !!!! this will fail: // !!!! com.alibaba.fastjson.JSONException: can not cast to : Page<Sub> TypeUtils.java:719 Page<Sub> page1 = TypeUtils.cast(page, type, parserconfig); System.out.println(page1.sub.getClass()); } static class Page<T> { public Page(){ super(); } public Page(T sub){ super(); this.sub = sub; } T sub; public T getSub() { return sub; } public void setSub(T sub) { this.sub = sub; } } static class Sub { public Sub(){ super(); } public Sub(int id){ super(); this.id = id; } int id; public int getId() { return id; } public void setId(int id) { this.id = id; } } }