user782104
user782104

Reputation: 13545

Get array from json in android

{
    "issueName": "2013-11-12",
    "direction": "rtl",
    "timestamp": "1384184763",
    "download": {
        "preview": "preview.zip",
        "content": {
            "count": 9,
            "files": ["1.zip",
            "2.zip",
            "3.zip",
            "4.zip",
            "5.zip",
            "6.zip",
            "7.zip",
            "8.zip",
            "9.zip"]
        },
        "thumbnail": "thumbnail.zip",
        "advertorial": "advertorial.zip"
    },
    "pages": {
        "1": {
            "pageNo": "1",
            "files": ["Pg001.png",
            "Web201311_P1_medium.jpg",
            "Pg001_142_p.jpg",
            "Pg001_142_t.png",
            "Pg001_142_p_ios.jpg",
            "Pg001_142_t_ios.png"],
            "section": 0
        },
        "2": {
            "pageNo": "2",
            **"files"**: ["Pg002.png",
            "Web201311_P2_medium.jpg",
            "Pg002_142_p.jpg",
            "Pg002_142_t.png",
            "Pg002_142_p_ios.jpg",
            "Pg002_142_t_ios.png"],
            "section": 0
        }
    }
}

I would like to get "pages"=>"files", but return org.json.JSONException: No value for files

JSONObject issueInfo = new JSONObject(filePath));
JSONObject pages = issueInfo.getJSONObject("pages");
Iterator iterator = pages.keys();

while (iterator.hasNext()) {
    String key = (String) iterator.next();
    JSONObject page = pages.getJSONObject(key);
    JSONArray files = pages.getJSONArray("files");
    String _thumbUri = files.getString(1);
    String _graphicUri = files.getString(2);
    String _textUri = files.getString(3);
}

Upvotes: 2

Views: 2933

Answers (3)

Triode
Triode

Reputation: 11359

JSONArray files = pages.getJSONArray("files");

Since files is not the direct child of the root `JSONObject use the below method.

JSONObject page = pages.getJSONObject(key).getJSONArray("files");

Upvotes: 1

Hariharan
Hariharan

Reputation: 24853

Instead of getting files JSONArray from page JSONObject you are trying to get it from pages JSONObject.. Try this:

JSONObject issueInfo = new JSONObject(filePath));
JSONObject pages = issueInfo.getJSONObject("pages");
Iterator iterator = pages.keys();

while (iterator.hasNext()) {
    String key = (String) iterator.next();
    JSONObject page = pages.getJSONObject(key);
    JSONArray files = page.getJSONArray("files");  //Correction here
    String _thumbUri = files.getString(1);
    String _graphicUri = files.getString(2);
    String _textUri = files.getString(3);
}

Upvotes: 3

Paresh Mayani
Paresh Mayani

Reputation: 128428

Mistake:

You are trying to get files from pages object instead of page object.

JSONArray files = pages.getJSONArray("files");

Solution:

JSONArray files = page.getJSONArray("files");

Upvotes: 2

Related Questions