首页 > 解决方案 > 使用 Array 或 String 解析 JSON 实例类型

问题描述

我正在尝试使用 Jackson 解析 JSON 数据,发现该实例有时是数组或字符串

带有 String 的 JSON DATA 实例:

{
  "Value" : "1"
}

带有 Array 的 JSON DATA 实例:

{
  "Value" : ["ram","kumar"]
}

由于出现此错误,下面给出

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot 
deserialize instance of `java.util.ArrayList` out of VALUE_STRING token

这种情况如何解决,谢谢

当前的java代码

ObjectMapper objectMapper = new ObjectMapper(); 
try { 
     String jsonInString = objectMapper.writeValueAsString(products.get(j)); 
       InventoryParser inventoryParser = 
        objectMapper.readValue(jsonInString, InventoryParser.class); 
        System.out.println(inventoryParser.getName()); 
      } 
       catch (IOException e) 
       { 
         e.printStackTrace(); 
        } 
    }

标签: javajsonjacksonwoocommerce-rest-api

解决方案


您可以编写自定义反序列化器并编写自定义逻辑来处理此类数据。在反序列化器中,您可以检查节点是否为数组。

请参考使用 jackson xml mapper 将 xml 反序列化到 pojo(示例在 XML 中,但也可以通过 using 类似地用于 JSON ObjectMapper


推荐阅读