記 fastjson泛型轉對象 第一次可以正常轉,第二次就變成JSONArray 問題


在解析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   感謝這位同學的無私奉獻

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM