example - objectmapper java
Excepción: "org.codehaus.jackson.map.JsonMappingException: no se puede deserializar la instancia de java.lang.String fuera del token START_OBJECT" (2)
Estoy tratando de validar un cuerpo JSON simple usando Jackson, donde estoy almacenando la solicitud JSON como una cadena en la variable "dataJson".
public void unmarshal(InputStream is) throws Exception {
// this will contain my actual json string
String dataJson= StUtil.toString(is);
System.out.println(dataJson);
//parse json string
String response = objectMapper.readValue(dataJson, String.class);
System.out.println(response);
}
Método SUtil.toString (InputStream es):
public static String toString(final InputStream is) {
final BufferedReader br = new BufferedReader(new InputStreamReader(is));
final StringBuffer buffer = new StringBuffer();
try {
for (String line; (line = br.readLine()) != null; ) {
buffer.append(line);
}
} catch (IOException ioe) {
}
return buffer.toString();
}
Estoy aprendiendo la parte de validación usando Jackson pero arroja error / excepción en línea
String response = objectMapper.readValue(dataJson, String.class);
Y a continuación está la excepción que estoy recibiendo:
Exception: "org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token"
Quería saber qué mal estoy haciendo. Cualquier ayuda en esto sería apreciada.
Solicitud JSON:
{"username" : "my_username","password" : "my_password","validation-factors":{"validationFactors":[{"name":"remote_address","value":"127.0.0.1"}]}}
Establecer este atributo en la instancia de ObjectMapper funciona,
objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
Una Cadena JSON se correlaciona con una String
Java (y viceversa), pero un objeto JSON no se correlaciona con una String
Java, que es lo que está intentando hacer con readValue
.
Si simplemente está tratando de validar el JSON, use algo como
objectMapper.readTree(dataJson);
e ignora el resultado. La llamada habrá arrojado una excepción si no pudo analizar.