我正在解析一个通过访问 API 检索的 JSON 文件。现在,我可以创建 Offer 类的对象的 ArrayList,但我只读取第一个 JSON 对象并获取我感兴趣的字符串。我如何创建尽可能多的我自己的 Offer JSON 文件中的对象?
换句话说,我需要迭代 JSON 文件并获取所有优惠。
JSON 如下所示:
{"offer":"expiration":"2011-04-08T02:30:00Z","valid_from":"2011-04-07T12:00:31Z","business":{"地址":{"state":"NY","zip":"10013","cross_streets":"查塔姆广场和沃斯街","address_1":"莫特街 12 号","address_2":null,"city ":"纽约"},"电话":"2126192989","已发布":"2011-04-07T12:00:33Z","rescinded_at":null,"valid_to":"2011-04-08T02:00 :00Z"}}, {"offer":"expiration":"2011-04-08T02:30:00Z","valid_from":"2011-04-07T12:00:31Z","business":{"地址":{"state":"NY","zip":"10013","cross_streets":"查塔姆广场和沃斯街","address_1":"莫特街 12 号","address_2":null,"city ":"纽约"},"电话":"2126192989","已发布":"2011-04-07T12:00:33Z","rescinded_at":null,"valid_to":"2011-04-08T02:00 :00Z"}},
{"offer":"expiration":"2011-04-08T02:30:00Z","valid_from":"2011-04-07T12:00:31Z","business":{"address":{"state":"NY","zip":"10013","cross_streets":"查塔姆广场和沃斯街","address_1":"莫特街 12 号","address_2":null,"city":"纽约"},"电话":"2126192989","已发布":"2011-04-07T12:00:33Z","rescinded_at":null,"valid_to":"2011-04-08T02:00:00Z"}}
如您所见,报价对象一个接一个...
这是我到目前为止的代码:
ArrayList<Offer> offerList = new ArrayList<Offer>();
for(String url: urls) {
OAuthConsumer consumer = new DefaultOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
consumer.setTokenWithSecret("", "");
try {
URL url1 = new URL(url);
HttpURLConnection request = (HttpURLConnection) url1.openConnection();
// sign the request
consumer.sign(request);
// send the request
request.connect();
String JSONString = convertStreamToString(request.getInputStream());
JSONObject jObject = new JSONObject(JSONString);
JSONObject offerObject = jObject.getJSONObject("offer");
String titleValue = offerObject.getString("title");
//System.out.println(titleValue);
String descriptionValue = offerObject.getString("description");
//System.out.println(attributeValue);
JSONObject businessObject = offerObject.getJSONObject("business");
String nameValue = businessObject.getString("name");
Offer myOffer = new Offer(titleValue, descriptionValue, nameValue);
offerList.add(myOffer);
Log.v("ArrayList:", offerList.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
return offerList;
最佳答案
您提供的 JSON 不是有效的 JSON。
如果在开头放置“[”,在末尾放置“]”,它将成为有效的 JSONArray。
你应该能够做这样的事情:
JSONArray array = new JSONArray(inputJSON);
for(int index = 0; index < array.length(); ++index) {
JSONObject offerObject = array.getJSONObject(index);
//... your offer calculation...add offer to list...
}
如果您有 Offer JSON 的 JSONObjects 的 JSONArray(如果您像我建议的那样添加括号,那么您就会这样做),那么您可以迭代 JSONArray 的长度,在每次传递时获取 JSONObject,并创建 Offer正如您在提供的示例中所做的那样。
关于java - 遍历 JSON 文件中的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987381/