com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Tipo de valor configurado para ObjectReader

Rencia Collazo:

Estoy recibiendo com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No value type configured for ObjectReaderun problema durante la ejecución de código a continuación

Jackson es la versión jackson-databind-2.9.9.jar

public <T> T parsingData(String body) {
  try {
    return getObjectMapper().reader().readValue(body);
  } catch (IOException ioe) {
     ioe.printStackTrace();
  }
}

A continuación Excepción exacta me estoy poniendo en printStackTracey puedo encontrar el String bodyque se expone en la excepción.

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No value type configured for ObjectReader
at [Source: (String)"{
     "timestamp": "2019-06-04T09:36:50.086+02:00",
     "path": "/api/check/85358/checking/246syb-f3f2-4756-91da-dae3e8ce774b/test/22462da-c4e2-45ca-bd27-246/rows/8bc3965a-ae22-4d7f-b770-262sgs24/port",
     "status": 400,
     "error": "Internal Server Error",
     "message": "[owner.firstName2:size:1:30, owner.lastName2:size:1:30]",
     "errorCode": 200000
    }
    "; line: 1, column: 1]

Actualizado: ¿Me podría explicar por qué estoy recibiendo esta excepción? Se debe esto a que no he proporcionar Classo TypeReference?

Michael Ziober:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Tipo de valor configurado para ObjectReader

Medios, Jacksonno sabe qué tipo que le gustaría a deserialise. No funciona debido a Tipo Erasure en Java .

Que funcionará cuando se enlaza a una clase:

public static <T> T parsingData(String body) throws IOException {
    return new ObjectMapper().readerFor(A.class).readValue(body);
}

O con Classparam:

public static <T> T parsingData(String body, Class<T> clazz) throws IOException {
    return new ObjectMapper().readerFor(clazz).readValue(body);
}

Véase la pregunta similar para readValueel método y la forma en que podría resolverse: ¿Cómo parametrizar el análisis de respuesta en Java?

Para entender readValuemehtod tenemos que echar un vistazo a la documentación :

Método de que el contenido se une lee de cadena JSON dado, utilizando la configuración de este lector. Valor de retorno es o bien de nueva construcción, o el valor de la raíz que se especificó con withValueToUpdate (Objeto).

pero en su código que utilizó lector pura sin ninguna configuración.

Si no conoce a un tipo que acaba de deserialise JSONa JsonNodeque es probablemente la manera más genérica:

JsonNode root = new ObjectMapper().readTree(json);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=333993&siteId=1
Recomendado
Clasificación