在试图从JSON文件中获取信息时,我收到了一个错误。我试图从“post”中获取数据,如“名称”、“年份”等,并将其打印到日志中。它一直告诉我org.json.JSONException: No value for NAME
。有人能给我指明正确的方向吗?
JSON示例:
{"posts":[
{"post":{"ID":"74",
"TOURN_ID":"999",
"YEAR":"2016",
"START_DATE":"2016-09-07",
"END_DATE":"2016-09-18",
"DATE_STRING":"September 7th - 18th 2016",
"NAME":"2016 Paralympic Games",
"ShortName":"2016 Paralympic Games",
"TOURN_TYPE":"International"}},
{"post":{"ID":"73",
"TOURN_ID":"999",
"YEAR":"2016",
"START_DATE":"2016-06-23",
"END_DATE":"2016-06-25",
"DATE_STRING":"June 22nd - 23rd 2016",
"NAME":"2016 USABA National Goalball Championships",
"ShortName":"2016 US Nationals",
"TOURN_TYPE":"Domestic"}},
{"post":{"ID":"72",
"TOURN_ID":"999",
"YEAR":"2016",
"START_DATE":"2016-05-12",
"END_DATE":"2016-05-14",
"DATE_STRING":"May 12th-14th 2016",
"NAME":"2016 USABA Western Regional Goalball Tournament",
"ShortName":"2016 Utah",
"TOURN_TYPE":"Domestic"}}
]}
这里是我的Java:
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONObject jsonObject = new JSONObject(result);
String tournInfo = jsonObject.getString("posts");
Log.i("Tourn Info", tournInfo); // displays correctly
JSONArray arr = new JSONArray(tournInfo);
for(int i = 0; i < arr.length(); i++){
JSONObject jsonPart = arr.getJSONObject(i);
String name = jsonPart.optString("NAME");
Log.i("Each Tournament Object", jsonPart.getString("post"));// Work correctly displays all the 'post' items
这就是我所犯的错误:
Log.i("Name of Tournament", jsonPart.getString("NAME"));
发布于 2016-05-09 15:59:25
正如你已经证明的那样,这是可行的:
Log.i("Each Tournament Object", jsonPart.getString("post"));
这意味着当您获得jsonPart对象时,第一级是"post“对象(这是多余的)。所以你需要把另一个层次降下来
JSONObject jsonObjectPost = jsonPart.getObject("post");
然后
Log.i("Name of Tournament", jsonObjectPost.getString("NAME"));
https://stackoverflow.com/questions/37127057
复制