code: private void parseProperties(JsonParser jp, Object[] values) throws IOException, SQLException {
          jp.nextToken();//START_OBJECT {
          while (jp.nextToken() != JsonToken.END_OBJECT) {
              String fieldName = TableLocation.quoteIdentifier(jp.getText().toUpperCase(), isH2); //FIELD_NAME columnName 
              JsonToken value = jp.nextToken();
              if (value == JsonToken.VALUE_STRING) {                
                  values[cachedColumnIndex.get(fieldName)] =  jp.getText();
              } else if (value == JsonToken.VALUE_TRUE) {
                  values[cachedColumnIndex.get(fieldName)] =  jp.getValueAsBoolean();
              } else if (value == JsonToken.VALUE_FALSE) {
                  values[cachedColumnIndex.get(fieldName)] =  jp.getValueAsBoolean();
              } else if (value == JsonToken.VALUE_NUMBER_FLOAT) {
                  values[cachedColumnIndex.get(fieldName)] =  jp.getValueAsDouble();
              } else if (value == JsonToken.VALUE_NUMBER_INT) {
                  values[cachedColumnIndex.get(fieldName)] =  jp.getBigIntegerValue();
              } else if (value == JsonToken.START_ARRAY) {
                  ArrayList<Object> arrayList = parseArray(jp);
                  values[cachedColumnIndex.get(fieldName)] = arrayList.toArray();
              } else if (value == JsonToken.START_OBJECT) {
                  String str = parseObject(jp);
                  values[cachedColumnIndex.get(fieldName)] = str;
              } else if (value == JsonToken.VALUE_NULL) {
                  values[cachedColumnIndex.get(fieldName)] = "null";
              }
              else {
                  //ignore other value
              }
          }
  
      }
docs: Parses the properties of a feature
  
  Syntax:
  
  "properties": {"prop0": "value0"}
  
  @param jp