[英]readEntity(Object.class) cannot deserializing object from entity stream
我必須從數據庫中獲取用戶。 我正在使用 String boot 中的微服務。 這是代碼:
@RequestMapping(value = "/obtener/{nombre}", method = RequestMethod.GET, produces = "application/json")
public ResponseEntity<?> ObtenerUsuario(@PathVariable(value = "nombre", required = true) String nombre) {
System.out.println("Acceso al microservicio: http://localhost:11708/obtener");
List<Usuario> usuarios = usuariosDAO.findByNombre(nombre);
if(usuarios.size()>1) {
System.out.println("ERROR: Varios usuarios tienen el mismo nombre");
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
if(!usuarios.isEmpty()) {
System.out.print("El nombre de usuario se ha encontrado");
return new ResponseEntity<>(usuarios.get(0), HttpStatus.FOUND);
}
System.out.println("El usuario no se ha encontrado");
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
我使用這個從 Servlet 調用它:
Client client = ClientBuilder.newClient();
WebTarget webResource = client.target("http://localhost:11708/obtener").path(nombre);
System.out.println("Llamada al microservicio: " + webResource.toString());
Invocation.Builder invocationBuilder = webResource.request(new String[] { "application/json" });
Response respuesta = invocationBuilder.get();
switch (respuesta.getStatus()) {
...
case 302: {
System.out.println("Nombre de usuario correcto");
Usuario usuario = respuesta.readEntity(Usuario.class);
}
...
}
但是 readEntity(Usuario.class) 不能從實體流中反序列化對象,它會拋出這個:
StandardWrapperValve[controlador.ServletController]: Servlet.service() for servlet controlador.ServletController threw exception
javax.ws.rs.ProcessingException: Error deserializing object from entity stream.
at org.glassfish.jersey.jsonb.internal.JsonBindingProvider.readFrom(JsonBindingProvider.java:101)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:257)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:236)
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:156)
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1091)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:874)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:808)
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:321)
at org.glassfish.jersey.client.InboundJaxrsResponse$1.call(InboundJaxrsResponse.java:115)
...
你知道我哪里弄錯了嗎? 謝謝你。
我終於解決了。 我的問題是我沒有為 java 對象創建空的構造函數。 JSON 使用這些作為默認值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.