当前位置: 首页 > 知识库问答 >
问题:

无法反序列化START_OBJECT令牌String.class中的java.lang.String实例

詹弘毅
2023-03-14

我第一次遇到ObjectMapper与string.class一起使用,我尝试将json作为string提供,得到了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);
   }

答复:

线程“Main”Com.FasterXml.Jackson.DataBind.JsonMappingException异常:无法反序列化位于[Source:{“Response”:“Success”}处的START_OBJECT令牌;行:1,列:1]位于Com.FasterXml.Jackson.DataBind.JsonMappingException.From(JsonMappingException.270)位于Com.FasterXml.Jackson.DataBind.DeserializationContext.ReportMappingException(DeserializationContext.java:1234)位于apper.java:2858)

在一次试验中,当我将响应传递为“成功”时,我会得到:

线程“main”com.fasterxml.jackson.core.JSONParseException中出现异常:无法识别的标记“success”:应为('true'、'false'或'null')

共有1个答案

谷梁鸣
2023-03-14

正确的做法是将其读作树:

ObjectMapper om = new ObjectMapper();
JsonNode tree = om.readTree("{\"response\":\"success\"}");
String response = tree.get("response").asText();
System.out.println(response);

输出:成功

 类似资料: