code: private void parseFeaturesMetadata(JsonParser jp) throws IOException, SQLException {
          jp.nextToken(); // FIELD_NAME features
          // Passes all the properties until "Feature" object is found
          while(!jp.getText().equalsIgnoreCase(GeoJsonField.FEATURES) &&
                  !jp.getText().equalsIgnoreCase(GeoJsonField.CRS)){
              jp.nextToken();
              if(jp.getCurrentToken().equals(JsonToken.START_ARRAY) || jp.getCurrentToken().equals(JsonToken.START_OBJECT)){
                  jp.skipChildren();
              }
              jp.nextToken();
          }
          if(jp.getText().equalsIgnoreCase(GeoJsonField.CRS)){
              parsedSRID = readCRS(jp);
          }
          if (jp.getText().equalsIgnoreCase(GeoJsonField.FEATURES)) {
              jp.nextToken(); // START_ARRAY [
              JsonToken token = jp.nextToken(); // START_OBJECT {
              while (token != JsonToken.END_ARRAY) {
                  jp.nextToken(); // FIELD_NAME type
                  jp.nextToken(); // VALUE_STRING Feature
                  String geomType = jp.getText();
                  if (geomType.equalsIgnoreCase(GeoJsonField.FEATURE)) {         
                      if (progress.isCanceled()) {
                          throw new SQLException("Canceled by user");
                      }
                      parseFeatureMetadata(jp);
                      token = jp.nextToken(); //START_OBJECT new feature                   
                      featureCounter++;
                      
                      if (nodeCountProgress++ % readFileSizeEachNode == 0) {
                          // Update Progress
                          try {
                              progress.setStep((int) (((double) fc.position() / fileSize) * 100));
                          } catch (IOException ex) {
                              // Ignore
                          }
                      }
                  } else {
                      throw new SQLException("Malformed GeoJSON file. Expected 'Feature', found '" + geomType + "'");
                  }
              }
              //LOOP END_ARRAY ]
          } else {
              throw new SQLException("Malformed GeoJSON file. Expected 'features', found '" + jp.getText() + "'");
          }
      }
docs: Parses the featureCollection to collect the field properties
  
  @param jp
  @throws IOException
  @throws SQLException