错误描述:使用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配置文件
以上具体解决方法百度上都有详解。