出現這個錯誤的原因是net.sf.json.JSONArray或JSONObject轉換時,對象內包含另一個對象,而該被包含的對象爲NULL,所以拋出異常。一種解決辦法是將json字符串裏的null去掉,但是覺得有點繁瑣,之後看到可以用fastjson解決。
用fastjson處理之後的數據,其包含null的鍵值對是刪去了的。
fastjson的remove方法替換了net.sf.json的discard方法,通過輸出看到remove方法返回的好像是被移除的那個數據,但是將remove返回值放進組裏的時候,確實原數據移除對應數據後的值。。。
for (int i = 0; i < sectionsArray.size(); i++) { JSONObject jsonObject = (JSONObject) sectionsArray.get(i); System.out.println("jsonObject: " + jsonObject); System.out.println("111:" + jsonObject.remove("contents") ); // JSONObject jsonObject2 = (JSONObject) jsonObject.remove("contents"); // JSONObject jsonObject2 = (JSONObject) jsonObject.discard("contents"); jsonObject.remove("contents"); // jsonArray1.add(jsonObject2); jsonArray1.add(jsonObject); }
令我奇怪的是我的後臺數據是這樣的(用json在線解析工具比較好看(
[{"數據結構簡介":[{"createUserId":37,"submitTime":1584147431000,"chapterId":1,"sectionsName":"數據結構簡介","id":1,"keyWord":"數據結構"},{"createUserId":0,"chapterId":1,"sectionsName":"數據結構算法","id":2,"keyWord":"數據結構算法"},{"createUserId":0,"chapterId":1,"sectionsName":"數據結構漸進分析","id":3,"keyWord":"時間複雜度"}]},{"數組":[{"createUserId":0,"chapterId":2,"sectionsName":"指針","id":4,"keyWord":"指針"},{"createUserId":0,"chapterId":2,"sectionsName":"結構體","id":5,"keyWord":"結構體"}]},{"鏈表":[]},{"堆棧":[]},{"隊列":[]},{"樹":[]},{"圖":[]},{"查找":[]},{"排序":[]}]
但是傳到前臺後,確是這樣的,多了序號作爲其key值,這樣子前端處理時就麻煩了很多。不知道有什麼解決辦法。
- 0: {數據結構簡介: Array(3)}
- 1: {數組: Array(2)}
- 2: {鏈表: Array(0)}
- 3: {堆棧: Array(0)}
- 4: {隊列: Array(0)}
- 5: {樹: Array(0)}
- 6: {圖: Array(0)}
- 7: {查找: Array(0)}
- 8: {排序: Array(0)}