關於使用ajax請求servletList轉換Json拋的異常There is a cycle in the hierarchy!暨將List轉換為JSONArray問題解決!

來源:互聯網
上載者:User

今天在完善自己做的網上書店的項目的時候,在查看書籍評論的時候準備使用ajax來操作(之前是直接頁面全部重新整理,感覺不爽,剛剛學了ajax,所以覺得ajax來弄),後台是用hibernate來操作資料庫的。但是當寫完代碼測試的時候突然報錯了。  

然後就百度 Google尋找解決方案,發現大多數都是說因為查詢到的對象是放在list集合裡面的,然后里面的對象是在資料庫通過外部索引鍵關聯了的,也就是在物件模型中有多對一或者一對多等的關聯關係, 
這樣查出來的list集合裡面有關聯的查出來就是一個對象而不是字串或者數字,導致JSONArray.fromObject()的時候再內部出現死迴圈。最後證實確實也是這個原因造成的,然後網上大部分的解決方案都是說的是把有關聯的對象的屬性給去掉,就/*過濾掉id屬性*/ 
JsonConfig config1 = new JsonConfig(); 
         /*用數組的方式寫出要過濾的東西*/ 
config1.setExcludes(new String[]{"user"}); 
JSONObject p1 = JSONObject.fromObject(review,config1); 
第一個參數是放入你要轉換的對象,list等.第二個參數放入JsonConfig 對象。 
   自己想了些許過後發現這樣的話如果你要查詢的欄位包括關聯的對象裡面的屬性值呢?這樣給它去除不轉換以後你在介面上就取不到了。所以似乎不能滿足我的要求。 
    最後自己覺得可以在為資料庫表寫一個javabean,裡面不用對象關聯,就如使用jdbc的時候的那樣, 
 
然後把從資料庫裡面讀出來的資料list遍曆後把值全部取出來並一一賦值給新建立的這個javabean對象,在重新 new一個list,用來裝改變後的對象。這樣最後再用JSONArray.formObject(list),放入建立的list集合,這樣轉換就可以成功了。成功了沒報錯。

當然這個方法對於我來說已經可以了,畢竟還是新手,主要是問題能解決就ok了,不知道以後在strut裡面是否有改進?自己現在剛剛學完javaweb,然後hibernate都是自學的,ajax剛剛學完,所以大神些看到這個的話就不要說是你這個根本不叫解決了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.