json - 找不到针对类javax.naming.ldap.LdapName $ 1的序列化程序

标签 json spring-mvc ldap

我是Spring Framework MVC和LDAP的新手。
我正在尝试制作RESTful API,实际上我已经做到了。
我可以通过调用api获得其他json对象。
但是当这些是LDAP类时,我无法获取json对象。
我的意思是我认为LDAP类无法转换为json对象。

LDAP类的含义是这些类具有以下注释:
@Entry(objectClasses = {“inetOrgPerson”,“organizationalPerson”,“person”,“top”},base =“ou = People”)

这是当我尝试通过调用rest api来获取json对象时的消息:
org.springframework.http.converter.HttpMessageNotWritableException:无法编写JSON:未找到类javax.naming.ldap.LdapName $ 1的序列化器,也未找到创建BeanSerializer的属性(为避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过引用链) :org.springframework.ldap.samples.useradmin.domain.User [“id”]-> javax.naming.ldap.LdapName [“all”]);嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException:没有为类javax.naming.ldap.LdapName $ 1找到序列化程序,也没有发现创建BeanSerializer的属性(为避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过参考链:org .springframework.ldap.samples.useradmin.domain.User [“id”]-> javax.naming.ldap.LdapName [“all”])
在org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.writeInternal(MappingJackson2HttpMessageConverter.java:207)
在org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:179)
在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)处
在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)处
在org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:189)处
在org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:69)
在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)
在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
在javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
在javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
在org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1496)
在org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1476)
在org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
在org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
在org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
在org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
在org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
在org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
在org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
在org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
在org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
在org.eclipse.jetty.server.Server.handle(Server.java:370)
在org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
在org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)
在org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.headerComplete(AbstractHttpConnection.java:1033)
在org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
在org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
在org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
在org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
在org.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:52)
在org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
在org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:543)
在java.lang.Thread.run(Thread.java:745)
引起原因:com.fasterxml.jackson.databind.JsonMappingException:没有为类javax.naming.ldap.LdapName $ 1找到序列化程序,也没有发现创建BeanSerializer的属性(为避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过参考链:org .springframework.ldap.samples.useradmin.domain.User [“id”]-> javax.naming.ldap.LdapName [“all”])
在com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:59)
在com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:26)
在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)
在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)
在com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)
在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)
在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)
在com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)
在com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:118)
在com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:1819)
在org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.writeInternal(MappingJackson2HttpMessageConverter.java:204)
...另外45个
造成原因:

com.fasterxml.jackson.databind.JsonMappingException:未找到类javax.naming.ldap.LdapName $ 1的序列化器,也未发现创建BeanSerializer的属性(为避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过参考链:org.springframework)。 ldap.samples.useradmin.domain.User [“id”]-> javax.naming.ldap.LdapName [“all”])
在com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:59)
在com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:26)
在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)
在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)
在com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)
在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:569)
在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)
在com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)
在com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:118)
在com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:1819)
在org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.writeInternal(MappingJackson2HttpMessageConverter.java:204)
在org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:179)
在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:148)处
在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:90)处
在org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:189)处
在org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:69)
在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:122)
在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)
在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)
在org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
在javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
在javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
在org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1496)
在org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1476)
在org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
在org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
在org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
在org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
在org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
在org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
在org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
在org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
在org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
在org.eclipse.jetty.server.Server.handle(Server.java:370)
在org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
在org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)
在org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.headerComplete(AbstractHttpConnection.java:1033)
在org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
在org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
在org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
在org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
在org.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:52)
在org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
在org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:543)
在java.lang.Thread.run(Thread.java:745)

最佳答案

这个错误的意思是-它无法序列化JSON数据并将其发送到前端,甚至无法正常进行反序列化。
将@JSONIgnore用作id变量。
根据我的代码,这对我有用。

public final class LdapInstitution {

@Id
@JsonIgnore
private Name dn;

关于json - 找不到针对类javax.naming.ldap.LdapName $ 1的序列化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035890/

相关文章:

javascript - 如何通过 json 设置 AngularJS $routeProvider 的路由

java - 每个请求的 Spring WebUtils 错误

java - 找不到 WebApplicationContext : no ContextLoaderListener registered? 然后出现 404 错误

java - 如何使用个人 LDAP 服务器、LDIF 文件设置 java 应用程序

linux - 如何在 openldap 复制(synrepl)中使用 slapadd 添加条目

python - 如何确保 python 字典键是小写的?

mysql - 如何为Mysql 5.7选择具有这种结构的json列

ldap - 单点登录 : SAML vs LDAP?

php - JSON 数组到 MySQL 数据库

java - 当其中一个字段不是 String 而是另一个对象时,如何使用 Spring MVC 提交表单?