无法反序列化START\u对象标记String.class之外的java.lang.String实例

无法反序列化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\"}";

我第一次遇到将ObjectMapper与String.class一起使用的情况,我尝试将json作为字符串,得到了JsonMappingException。你能帮我理解为什么吗

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);