1. 程式人生 > >fastJson解析報錯com.alibaba.fastjson.JSONException: create instance error...

fastJson解析報錯com.alibaba.fastjson.JSONException: create instance error...

今天用fastJson解析報 create instance error的錯誤

   認真檢查,bean類內的欄位都和服務端返回的欄位一致,格式都是正確的,為什麼會報錯呢。

   在網上找到答案,如果存在內嵌的情況:

比如public class  A{

          private String haha;

          private  int   gogo;

          private B   bb;

set和get方法省略。。。。。

         public class B{

          private String name;

          private  int   price;

set和get方法省略。。。。。

              }

}

B巢狀在A裡,那麼我們要宣告內嵌類static屬性,如下(這樣問題解決)

public class  A{

          private String haha;

          private  int   gogo;

          private B   bb;

set和get方法省略。。。。。

  publicstatic class B{

          private String name;

          private  int   price;

set和get方法省略。。。。。

              }

}

原文連結:http://blog.csdn.net/gogolaile/article/details/54631139

------------------------分割線------------------------------------------

根據組裡其他人的分享,這個問題主要是因為Java內部類和巢狀類的實現機制造成的,首先按照Java程式設計思想的說法,靜態的內部類叫做巢狀類,那麼兩者有什麼區別呢?一般的內部類雖然在原始碼中沒有寫,但是編譯後會看到裡面多了一個指向外部類的引用,如果使用內部類進行json序列化,會因為找不到它的外部類而報異常,而巢狀類因為是靜態的,裡面沒有預設的外部類的引用,即使沒有外部類的物件也能夠使用,因此在json轉換的時候不會報錯。