无法反序列化START\u对象标记String.class之外的java.lang.String实例
我第一次遇到将ObjectMapper与String.class一起使用的情况,我尝试将json作为字符串,得到了JsonMappingException。你能帮我理解为什么吗无法反序列化START\u对象标记String.class之外的java.lang.String实例,java,json,jackson,Java,Json,Jackson,我第一次遇到将ObjectMapper与String.class一起使用的情况,我尝试将json作为字符串,得到了JsonMappingException。你能帮我理解为什么吗 public static void main(String args[]) throws JsonParseException, JsonMappingException, IOException{ String response="{\"response\":\"success\"}";
public static void main(String args[]) throws JsonParseException, JsonMappingException, IOException{
String response="{\"response\":\"success\"}";
ObjectMapper objectMapper = new ObjectMapper();
Object object = objectMapper.readValue(response, String.class);
System.out.println(object);
}
答复:
主线程中的异常
com.fasterxml.jackson.databind.JsonMappingException:无法
从起始\u对象标记中反序列化java.lang.String实例
[来源:{response:success};行:1,列:1]
com.fasterxml.jackson.databind.JsonMappingException.fromJsonMappingException.java:270
在
com.fasterxml.jackson.databind.DeserializationContext.reportMappingExceptionDeserializationContext.java:1234
在
com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedTokenDeserializationContext.java:1122
在
com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedTokenDeserializationContext.java:1075
在
com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserializeStringDeserializer.java:60
在
com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserializeStringDeserializer.java:11
在
com.fasterxml.jackson.databind.ObjectMapper.\u readMapAndCloseObjectMapper.java:3814
在
com.fasterxml.jackson.databind.ObjectMapper.readValueObjectMapper.java:2858
仅在一次试验中,当我将响应作为成功通过时,我得到:
主线程中的异常
com.fasterxml.jackson.core.JsonParseException:无法识别的令牌
“成功”:应为“真”、“假”或“空”
因为您传递了json对,其中response是一个字段名,success是该字段的一个值,所以您需要创建ResponseDTO类 公众阶级响应{ 私有字符串响应; //这里是getter/setter 及 希望有帮助。正确的方法是: 产出:
成功我需要的是适用于字符串的响应。classWell只要一个简单的文本响应,没有Json结构就可以了。我尝试了,但成功了,但得到了jsonparseException。我也有疑问地补充了这一点。我的意思是,在这种情况下,你不需要使用ObjectMapper。如果你的响应只是一个字符串,你可以原样使用它。Y实际上你是对的。我不确定。这是现有的代码。我们正在为实现此功能的方法编写junit
Object object = objectMapper.readValue(response, ResponseDTO.class);
ObjectMapper om = new ObjectMapper();
JsonNode tree = om.readTree("{\"response\":\"success\"}");
String response = tree.get("response").asText();
System.out.println(response);