首页 > 解决方案 > JsonMappingException:无法从 VALUE_STRING 令牌中反序列化 java.util.ArrayList 的实例

问题描述

我尝试从 String 反序列化 java.util.ArrayList 的实例

我的代码是:

 @PostMapping("/queue_details")
    public void getQueueDetailsInfo(@RequestBody String detailInfo) throws JSONException, IOException, JsonParseException, JsonMappingException {
        ObjectMapper mapper = new ObjectMapper();
        List<DetailedReport> detailedReport = mapper.readValue(detailInfo, new TypeReference<List<DetailedReport>>() {
        });

但是有例外:

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token

我打印出detailInfo并得到:

    "[{\"provider\":\"GlobalTelecom\",\"trunk\":486,\"Answer\":0,\"Busy\":2,\"No Answer\":0},{\"provider\":\"GlobalTelecom\",\"trunk\":512,\"Answer\":2,\"Busy\":0,\"No Answer\":1},{\"provider\":\"GlobalTelecom\",\"trunk\":700,\"Answer\":2,\"Busy\":1,\"No Answer\":1},{\"provider\":\"Telia\",\"trunk\":123,\"Answer\":2,\"Busy\":0,\"No Answer\":1},{\"provider\":\"Telia\",\"trunk\":456,\"Answer\":1,\"Busy\":2,\"No Answer\":1},{\"provider\":\"Telia\",\"trunk\":789,\"Answer\":2,\"Busy\":0,\"No Answer\":0},{\"provider\":\"TotalNetwork\",\"trunk\":730,\"Answer\":1,\"Busy\":2,\"No Answer\":2},{\"provider\":\"TotalNetwork\",\"trunk\":840,\"Answer\":2,\"Busy\":1,\"No Answer\":0},{\"provider\":\"TotalNetwork\",\"trunk\":920,\"Answer\":1,\"Busy\":1,\"No Answer\":2}]"
    

但是当我这样做时

@PostMapping("/queue_details")
    public void getQueueDetailsInfo(@RequestBody String detailInfo) throws JSONException, IOException, JsonParseException, JsonMappingException { 
        detailInfo = "[{\"provider\":\"GlobalTelecom\",\"trunk\":486,\"answer\":0,\"busy\":2,\"noAnswer\":0}," +
                "{\"provider\":\"GlobalTelecom\",\"trunk\":512,\"answer\":2,\"busy\":0,\"noAnswer\":1}," +
                "{\"provider\":\"GlobalTelecom\",\"trunk\":700,\"answer\":2,\"busy\":1,\"noAnswer\":1}," +
                "{\"provider\":\"Telia\",\"trunk\":123,\"answer\":2,\"busy\":0,\"noAnswer\":1}," +
                "{\"provider\":\"Telia\",\"trunk\":456,\"answer\":1,\"busy\":2,\"noAnswer\":1}," +
                "{\"provider\":\"Telia\",\"trunk\":789,\"answer\":2,\"busy\":0,\"noAnswer\":0}," +
                "{\"provider\":\"TotalNetwork\",\"trunk\":730,\"answer\":1,\"busy\":2,\"noAnswer\":2}," +
                "{\"provider\":\"TotalNetwork\",\"trunk\":840,\"answer\":2,\"busy\":1,\"noAnswer\":0}," +
                "{\"provider\":\"TotalNetwork\",\"trunk\":920,\"answer\":1,\"busy\":1,\"noAnswer\":2}]";
                
        ObjectMapper mapper = new ObjectMapper();
        List<DetailedReport> detailedReport = mapper.readValue(detailInfo, new TypeReference<List<DetailedReport>>() {
        });

没有发生异常。为什么?

标签: javajson

解决方案


推荐阅读