@Override
  public boolean next(LongWritable key, Text value) throws IOException {
    JsonToken token;

    // first call to nextKeyValue() so we need to create the parser and move to the
    // feature array
    if (parser == null) {
      parser = new JsonFactory().createJsonParser(inputStream);

      parser.setCodec(new ObjectMapper());

      token = parser.nextToken();

      while (token != null && !(token == JsonToken.START_ARRAY && parser.getCurrentName() != null && parser
          .getCurrentName().equals("features"))) {
        token = parser.nextToken();
      }

      if (token == null)
        return false; // never found the features array
    }

    key.set(parser.getCurrentLocation().getCharOffset());

    token = parser.nextToken();

    // this token should be a start object with no name
    if (token == null || !(token == JsonToken.START_OBJECT && parser.getCurrentName() == null))
      return false;

    ObjectNode node = parser.readValueAsTree();

    value.set(node.toString());

    return true;
  }
Enumerates records from an Enclosed JSON file - use either Esri JSON or GeoJSON subclass
ql/src/java/org/apache/hadoop/hive/ql/io/esriJson/EnclosedBaseJsonRecordReader.java