package com.gis.action;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.codehaus.jackson.map.ObjectMapper;
import com.gis.entity.Attributes;
import com.gis.entity.Geometry;
import com.gis.entity.HeavyMetal;
import com.gis.rest.RestAPI;
import com.gis.util.Constants;
public class QueryAction {
    public HeavyMetal queryByObjectid(int objectid) {
        HeavyMetal heavyMetal = new HeavyMetal();
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
        formparams.add(new BasicNameValuePair("f", "json"));
//queryurl=http://192.168.24.218/ArcGIS/rest/services/HeavyMetal/FeatureServer/0/11(11是objectid)
        String response = RestAPI.rest(Constants.queryurl + objectid,
                formparams);
        JSONObject jsonObject = JSONObject.fromObject(response);
        Map map = new HashMap();
        for (Iterator iter = jsonObject.keys(); iter.hasNext();) {
            String key = (String) iter.next();
            map.put(key, jsonObject.get(key));
        }
        System.out.println("feature:" + map.get("feature"));
        ObjectMapper objectMapper = new ObjectMapper();
        String str = map.get("feature").toString();
        JSONObject jsonObject1 = JSONObject.fromObject(str);
        Map map1 = new HashMap();
        String[] strings = new String[2];
        int i = 0;
        for (Iterator iter = jsonObject1.keys(); iter.hasNext();) {
            // System.out.println(iter);
            String key = (String) iter.next();
            map.put(key, jsonObject1.get(key));
            // System.err.println(jsonObject1.get(key));
            strings[i] = jsonObject1.get(key).toString();
            i++;
        }
        JSONObject obj = new JSONObject().fromObject(strings[0]);
        // System.err.println("OBJECTID:" + obj.get("OBJECTID"));
        Attributes attributes = (Attributes) JSONObject.toBean(obj,
                Attributes.class);
        obj = new JSONObject().fromObject(strings[1]);
        Geometry geometry = (Geometry) JSONObject.toBean(obj, Geometry.class);
        heavyMetal.setAttributes(attributes);
        heavyMetal.setGeometry(geometry);
        return heavyMetal;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        QueryAction queryAction = new QueryAction();
        System.err.println(queryAction.queryByObjectid(11));
    }
}

public class RestAPI {
    public static String rest(String url,List<NameValuePair> formparams)
    {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost post = new HttpPost(url);
           
        String responseBody = null;
        BufferedReader br = null;
        try {
            UrlEncodedFormEntity uef = new UrlEncodedFormEntity(formparams, HTTP.UTF_8);
            post.setEntity(uef);
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
               
            responseBody = httpClient.execute(post, responseHandler);
            System.out.println(responseBody);
        }
        catch (Exception e) {
            // TODO: handle exception
        }
        return responseBody;
    }
}


response值

{"feature":{"attributes":{"OBJECTID":11,"ID":1,"CD":0.2433,"HG":0.2433,"DP_AS":1.0309,"CU":2.3848,"PB":217.214,"CR":353.527,"ZN":357.4679,"NI":208.2775,"HM_TIME":1379085429000,"HM_NAME":"宜昌","USER_NAME" : null},"geometry":{"x":111.300000000745,"y":31.199999×××549}}}

解析一次之后的str值

feature:{"attributes":{"OBJECTID":11,"ID":1,"CD":0.2433,"HG":0.2433,"DP_AS":1.0309,"CU":2.3848,"PB":217.214,"CR":353.527,"ZN":357.4679,"NI":208.2775,"HM_TIME":1379085429000,"HM_NAME":"宜昌","USER_NAME":null},"geometry":{"x":111.3,"y":31.2}}

再分别解析出attributes和geometry,最终得到解析出的对象


demo地址http://down.51cto.com/data/947003