【发布时间】:2021-10-22 07:56:58
【问题描述】:
我读取了整个 JSON 文件,但我需要从 key rating 中读取值并存储到 ArrayList 中,这是代码但它没有做任何事情
ArrayList<Object> rates = new ArrayList<>();
FileReader read = new FileReader("C:\\Users\\User\\eclipse-workspace\\Task\\files\\reviews.json");
JSONParser parser = new JSONParser();
Object obj = parser.parse(read);
JSONObject jsonObject = new JSONObject();
jsonObject = (JSONObject) obj;
JSONArray reviews = new JSONArray();
reviews = (JSONArray) jsonObject.get("reviews");
Iterator<Entry> itr1 = reviews.iterator();
while (itr1.hasNext()) {
Map rate= ((Map)jsonObject.get("rating"));
Iterator<Entry> itr2 = ((JSONObject) itr1.next()).entrySet().iterator();
while (itr2.hasNext()) {
if(itr2.equals("rating")) {
rates.add(itr2);
Map.Entry pair = itr2.next();
System.out.println(rate);
}
}
}
【问题讨论】:
-
你怎么知道的?
-
你的json数据的结构是什么?
-
这里是 JSON:```{ "reviews": [ { "id": 2097047, "reviewId": "93f131be27dc1122bb7ef0048ad10e4f", "reviewFullText": "5 星评论", "reviewText": “5 星评论”、“numLikes”:0、“numComments”:0、“numShares”:0、“rating”:5、“reviewCreatedOn”:“2 个月前”,
-
JSONObject jsonObject = new JSONObject(); jsonObject = (JSONObject) obj;如果您立即通过重新分配jsonObject = (JSONObject) obj;将其丢弃,那么创建new JSONObject();的意义何在?而是简单地写JSONObject jsonObject = (JSONObject) obj;。同JSONArray reviews = new JSONArray(); reviews = (JSONArray) jsonObject.get("reviews");,直接写JSONArray reviews = (JSONArray) jsonObject.get("reviews");。 -
无论如何
Map rate= ((Map)jsonObject.get("rating"));看起来不正确。你认为这里应该发生什么(注意jsonObject持有什么)?