try {
if (returnIdsOnly) {
arrayTemp = new JSONArray();
while (featureIterator.hasNext()) {
Feature feature = featureIterator.next();
String fid = feature.getIdentifier().getID();
String id = fid.substring(fid.lastIndexOf(".") + 1);
arrayTemp.put(Integer.valueOf(id));
}
obj.put("objectIds", arrayTemp);
} else {
objSR = new JSONObject();
objSR.put("wkid", outSR);
obj.put("spatialReference", objSR);
GeometryType geometryType = featureCollection
.getSchema().getGeometryDescriptor().getType();
obj
.put("geometryType", EsriJsonUtil
.geometryType2String(geometryType
.getBinding()));
String geometryField = featureCollection.getSchema()
.getGeometryDescriptor().getLocalName();
ArrayList<String> fields = new ArrayList<String>();
Collection<PropertyDescriptor> propertyDescriptors = featureCollection
.getSchema().getDescriptors();
for (Iterator<PropertyDescriptor> itr = propertyDescriptors
.iterator(); itr.hasNext();) {
PropertyDescriptor propertyDescriptor = itr.next();
String name = propertyDescriptor.getName()
.getLocalPart();
if (!geometryField.equals(name)) {
fields.add(name);
}
}
arrayTemp = new JSONArray();
while (featureIterator.hasNext()) {
Feature feature = featureIterator.next();
objTemp = new JSONObject();
if (returnGeometry) {
Geometry geo = (Geometry) feature
.getDefaultGeometryProperty()
.getValue();
if (!outSR.equals(sr)) {
geo = GeometryToolkit.project(geo, sr,
outSR);
}
objTemp.put("geometry", EsriJsonUtil
.geometry2JSON(geo));
}
if (outFields != null && !"".equals(outFields)) {
objTemp2 = new JSONObject();
String field = null;
String value = null;
if ("*".equals(outFields)) {
Iterator<String> iField = fields.iterator();
while (iField.hasNext()) {
field = iField.next();
Object attribute = feature.getProperty(
field).getValue();
value = attribute == null ? ""
: attribute.toString();
objTemp2.put(field, value);
}
} else {
String[] strOutFields = outFields
.split(",");
int outFieldsCount = strOutFields.length;
for (int i = 0; i < outFieldsCount; i++) {
field = strOutFields[i];
Object attribute = feature.getProperty(
field).getValue();
value = attribute == null ? ""
: attribute.toString();
objTemp2.put(field, value);
}