带有数组或字符串的JSON解析实例类型

时间:2018-08-23 16:11:41

标签: java json jackson woocommerce-rest-api

我正在尝试使用Jackson解析JSON数据,一段时间后发现该实例为数组或字符串

带有String的JSON DATA实例:

{
  "Value" : "1"
}

带有Array的JSON数据实例:

{
  "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(); 
        } 
    }

2 个答案:

答案 0 :(得分:0)

像这样读入map数据结构,然后对其进行处理。

final Map<String, Object> result = new ObjectMapper().readValue(jsonStr,
        new TypeReference<Map<String, Object>>() {
        });

答案 1 :(得分:0)

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

请参考deserialize xml to pojo using jackson xml mapper(示例使用XML,但也可以使用ObjectMapper类似地用于JSON)