解决Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)

Posted 杨鑫newlfe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)相关的知识,希望对你有一定的参考价值。

我们在写程序的时候提示警告或者报错:

Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)

或者

org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?); JsonMappingException: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)
org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:106)
org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:231)
org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:174)
org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:113)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

原因是我们的Map在转换JSON或者其他对象的时候报错,map中有空/null的key。我们排查或者打印下JSONObject.toJSONString()看下结构,就知道哪个key的问题了

以上是关于解决Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)的主要内容,如果未能解决你的问题,请参考以下文章

map的key可以为null吗

iOS- storyboard this class is not key value coding-compliant for the key xxx

map中指定key的值能取出来吗

报错:this class is not key value coding-compliant for the key closeLotTextField解决方法

java map.put(key,value) value中有一个空值,无法插入到map中,怎么解决?

完美解决Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=