Question

I'm trying to parse this code : I need the "name" attribute under "docs" under "response".

{
  "responseHeader": {
    "status": 0,
    "QTime": 1,
    "params": {
      "q": "Lecture1-2",
      "_": "1399736575991",
      "wt": "json"
    }
  },
  "response": {
    "numFound": 6,
    "start": 0,
    "docs": [
      {
        "id": "TWINX2048-3200PRO",
        "name": "CORSAIR  XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail",
        "manu": "Corsair Microsystems Inc.",
        "manu_id_s": "corsair",
        "cat": [
          "electronics",
          "memory"
        ],
        "features": [
          "CAS latency 2,\t2-3-3-6 timing, 2.75v, unbuffered, heat-spreader"
        ]}}

I tried to do it like :

JSONObject nodeRoot  = new JSONObject(result); 
                JSONObject nodeStats = nodeRoot.getJSONObject("response");
                String sSDR = nodeStats.getString("docs");

but I'having other result...

Was it helpful?

Solution

"docs": [ is a JSONArray.

What you have

 String sSDR = nodeStats.getString("docs");

Change to

 JSONObject nodeStats = nodeRoot.getJSONObject("response");
 JSONArray jr = (JSONArray) nodeStats.getJSONArray("docs");
 for(int i=0;i<jr.length();i++)
 {
 JSONObject jb = jr.getJSONObject(i);
 String id = jb.getString("id");
 }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top