在解析json數據的時候,在使用泛型對象的時候即:
public class ResultMsgDto<E> implements Serializable { private static final long serialVersionUID = 123L; private int resultCode; private E resultObject; private String resultMsg; // get set }
第一次在使用
ResultMsgDto<List<ArticleDto>> resultMsg = JSON.parseObject(result, new TypeReference<ResultMsgDto<List<ArticleDto>>>() {});
把json字符串轉換為 對應泛型對象的時候是可以的,因為我增加一個數據,從服務器中再次獲取json字符之后,再次調用上面的方法的時候,這次沒有成功,而是JSONArray 類型的數據
之后網上找到了解決方法:
1、https://github.com/alibaba/fastjson/issues/569 這里面有問題 但是已經解決了 這個時候你就要看看你的fastjson的jar包版本,你可以換一個高版本的試試
2、如果換了高版本還是不行的話,那估計你犯了跟我一樣的錯誤
這個時候你就需要查看你的代碼中,有沒有 沒有使用泛型而直接使用ResultMsgDto,例如下面這個錯誤的列子:
ResultMsgDto resultMsg = JSON.parseObject(result, new TypeReference<ResultMsgDto>() {});
這個時候就要把這語句中的泛型類型加上去,即使你用不着他對於的對象,但是還需要加上泛型
切記:解決方案:統一使用泛型類型,項目中不允許沒有泛型類型的ResultMsgDto,就不會存在這個問題。
參考:http://blog.csdn.net/ykdsg/article/details/50432494 感謝這位同學的無私奉獻