Java中,某个API 返回的数据,可能是 [] 数组,也可能是 {} Map对象,那么在使用 JSON.parseObject()的时候,如果是 [] 数组,则会报错,有什么简单优雅的方法能兼容处理这两种情况?
一个方法是使用 ObjectMapper,通过 node.isArray 判断是否是 [] 对象还是普通的Map对象:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
    ObjectMapper objectMapper = new ObjectMapper();
    try {
      JsonNode root = objectMapper.readTree(jsonString);
      if (root.isArray()) {
        List<DemoItem> list = JSON.parseArray(jsonString, DemoItem.class);
      }
      JSON.parseObject(jsonString, Demo.class);
    } catch (Exception e) {
      throw e;
    }
另外可以通过判断第一个非空白字符是否是 [ 的方法来实现:
    
    public static char firstNonWhitespaceChar(String str) {
        if (str == null || str.isEmpty()) {
            return '\0'; 
        }
        int length = str.length();
        for (int i = 0; i < length; i++) {
            char c = str.charAt(i);
            if (!Character.isWhitespace(c)) {
                return c;
            }
        }
        return '\0'; 
    }
    if ('[' = firstNonWhitespaceChar(jsonString)) {
        List<DemoItem> list = JSON.parseArray(jsonString, DemoItem.class);
    }
    JSON.parseObject(jsonString, Demo.class);