简体   繁体   中英

How to Parse only some selected Json arrays and Json Objects from a Url to android device

I have a Json data and which contains multiple JSON arrays and JSON Objects so i want to parse some of them in an android activity ,...

Example of JSON array and Json objects at here

So i want to call some of them in the android device.... i know how to parse but i want only some of contents ,..

I have the data like

 {
   "process":"done"
    "one":1
   "List": {
    "Something": [
        {
            "Name": "John",
            "phone": "test"
        }
    ]
     "details":"ok"
     "two":2 
    "SomethingElse": [
        {
            "Name": "Smith",
            "phone": "test"
        }
    ]
   }
  }

Like that i have a Restful service and it has lot of data ,.. so if want to call "list" or "SomethingElse" jsonObjecs/arrays.... its not calling its strucking at starting,..

You could consider parsing your data the SAX way, just go through your nodes, if it's what you need parse it, otherwise skip it and go on. Have a look here , JSONReader is the way to go.

Json Array for your above response will be like this

     JSONObject JObject = new JSONObject(response);
      String Process = JObject.getstring("process");
    String one= JObject.getstring("one");
    JSONObject Listobject= JObject.getjsonobject("List");
    JsonArray something =Listobject.getjsonarray("Something");
    for(int i = 0 ; i < something.length(); i++){
     JsonObject somethingobject =something.getjsonobject(i);
         String name=somethingobject.getstring("Name"); 
        String phone=somethingobject.getstring("phone"); 
    }

      String details= JObject.getstring("details");
    String two= JObject.getstring("two");

    JsonArray SomethingElse=JObject.getjsonarray("SomethingElse");

    for(int j = 0 ; j < SomethingElse.length(); j++){
     JsonObject SomethingElseobject =SomethingElse.getjsonobject(j);
         String name1=SomethingElseobject .getstring("Name"); 
        String phone1=SomethingElseobject .getstring("phone"); 
    }

Code for getting data from server

public void run() {

        Log.i("run method", "calling run method");
        try {
            if (method == HttpMethodType.GET) {
                response(executeHttpGet());
            } else {
                response(executeHttpPost());
            }
        } catch (ConnectTimeoutException ex) {
            exception("Please retry after sometime...");
        } catch (UnknownHostException e) {
            exception("Server might be down...");
        } catch (IOException e) {
            exception("Please check your internet connectivity...");
        } catch (Exception e) {
            exception(e.getMessage());
        }

        Log.i(tag, "Http Call Finish");
    }

    private void response(String response) {

        if (resListener != null) {
            resListener.handleResponse(response);
        }
    }

    private void exception(String exception) {
        if (excepListener != null) {
            excepListener.handleException(exception);
        }
    }

    public String executeHttpGet() throws Exception {
        Log.i("calling method", "calling execute");
        Log.i("path in method", path);
        BufferedReader in = null;
        String page = null;
        try {

            HttpGet request = new HttpGet(path);
            HttpResponse response = client.execute(request,localContext);

            Log.i("======", response.toString());
            in = new BufferedReader(new InputStreamReader(response.getEntity()
                    .getContent()));
            StringBuffer sb = new StringBuffer("");
            String line = "";

            while ((line = in.readLine()) != null) {
                Log.i("the response is ::", line);
                sb.append(line);

            }
            in.close();
            page = sb.toString();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return page;
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM