Reputation: 13545
{
"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
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
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
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