我是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/