錯誤描述:使用jqGrid獲取json數據並插入至表中,System.out.print可以正常輸出jsonObject對象數據,但返回至頁面時拋出異常
GET http://localhost:8080/*.do?500 (Internal Server Error)
type Exception report
message Could not write content: Object is null (through reference chain: net.sf.json.JSONObject["rows"]->net.sf.json.JSONArray[5]->net.sf.json.JSONObject["cell"]->net.sf.json.JSONArray[4]->net.sf.json.JSONNull["empty"]);
nested exception is com.fasterxml.jackson.databind.JsonMappingException: Object is null (through reference chain: net.sf.json.JSONObject["rows"]->net.sf.json.JSONArray[5]->net.sf.json.JSONObject["cell"]
->net.sf.json.JSONArray[4]->net.sf.json.JSONNull["empty"])
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: Object is null (through reference chain: net.sf.json.JSONObject["rows"]->net.sf.json.JSONArray[5]->net.sf.json.JSONObject["cell"]
->net.sf.json.JSONArray[4]->net.sf.json.JSONNull["empty"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Object is null (through reference chain: net.sf.json.JSONObject["rows"]
->net.sf.json.JSONArray[5]->net.sf.json.JSONObject["cell"]->net.sf.json.JSONArray[4]->net.sf.json.JSONNull["empty"])
org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:238)
org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:208)
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:161)
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:101)
org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:167)
org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:71)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
返回500錯誤有很多種可能性,上述錯誤問題其實很簡單,jsonObject對象內包含別的對象,且存在某object值為NULL。
如果你的返回值中不存在null,不會報錯,一旦有null字段,則無法插入到jqGrid中,並報上述錯誤。
解決方案:為了程序的健壯性,最好不要在json數據中直接存null,可以在轉json格式時加一個判斷,存在字段為null則將其賦值為“ ”(空字符串),然后傳輸時就不會出現上述錯誤了。
解決異常還是要仔細看錯誤提示,自己看提示調試有時候比直接百度來的更有效。
啦啦啦 ……
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
500其他可能性:
1.json序列化的問題{
1.1沒有寫@responseBody
1.2可以嘗試使用MappingJacksonView做解析
}
2.確認json序列化沒問題,通過其他方式你可以正常輸出的話,可以看一下是否因為數據量過大而造成異常,修改web.config配置文件
以上具體解決方法百度上都有詳解。