Java使用JSONParser读取JSON文件仅返回一行结果该如何解决
问题原因
- 你当前的代码遍历的是JSON顶层对象的键值对,你的JSON文件顶层只有
reviews这一个键,所以自然只会输出一行内容,输出的就是这个键对应的整个数组内容 - 你已经把
reviews数组提取出来了,但完全没有用到这个变量,自然没法遍历输出数组内的每个元素
修正后的代码
import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import java.io.FileReader; import java.util.Map; public class ReadReviews { public static void main(String[] args) { try { FileReader read = new FileReader("C:\\Users\\User\\eclipse-workspace\\Task\\files\\reviews.json"); JSONParser parser = new JSONParser(); JSONObject jsonObject = (JSONObject) parser.parse(read); // 直接提取reviews数组,无需提前初始化无意义的空数组 JSONArray reviews = (JSONArray) jsonObject.get("reviews"); // 遍历数组内的每一个评论对象 for (Object reviewObj : reviews) { JSONObject review = (JSONObject) reviewObj; System.out.println("===== 单条评论内容 ====="); // 遍历单条评论的所有键值对 for (Map.Entry<String, Object> entry : review.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } System.out.println(); // 每条评论之间空行分隔,方便阅读 } read.close(); } catch (Exception e) { e.printStackTrace(); } } }
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

