gpt4 book ai didi

java - 遍历 JSON 文件中的多个对象

转载 作者:行者123 更新时间:2023-12-02 08:17:56 32 4
gpt4 key购买 nike

我正在解析一个通过访问 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","re​​scinded_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","re​​scinded_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","re​​scinded_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 JavaDoc

你应该能够做这样的事情:

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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com