@SuppressWarnings({"rawtypes", "unchecked" })
  private static List<Object> fatLand(final List<?> arr) {
    final List ret = new ArrayList<>();
    for (final Object o : arr) {
      if (o == null) {
        ret.add(null);
      } else if (o instanceof Map<?, ?>) {
        ret.add(fatMap(((Map) o)));
      } else if (o instanceof List<?>) {
        ret.add(fatLand((List) o));
      } else if (o.getClass().isArray()
          && o.getClass().getComponentType() != byte.class) {
        Class<?> ct = o.getClass().getComponentType();
        if (ct.isPrimitive()) {
          ret.add(primitiveArrayToList(o));
        } else {
          ret.add(fatLand(Arrays.asList((Object[]) o)));
        }
      } else {
        ret.add(o);
      }
    }
    return ret;
  }
Takes JSON string in Text form, and has to return an object representation above
it that's readable by the corresponding object inspector.

For this implementation, since we're using the jackson parser, we can construct
our own object implementation, and we use HCatRecord for it
hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/JsonSerDe.java