首页 > 解决方案 > 解析 BufferedReader 对象时的问题

问题描述

我需要读取 json 格式的 BufferedReader 对象的输出,解析 json 并提取一些值。我的代码如下所示:

        BufferedReader reader = new BufferedReader(new 
        InputStreamReader(proc1.getInputStream()));
        Stream<String> s = reader.lines();
        Object[] t = s.toArray();
        String result = Arrays.toString(t);
        JSONParser jp = new JSONParser();
        JSONArray jArr = (JSONArray) jp.parse(result);
        System.out.println(jArr);

JSONArray jArr 如下所示:

[
  {
    "result": {
      "totalSize": 1,
      "records": [
        {
          "Owner_Name": "User Group",
          "Creation_Date": "2020-12-15",
          "attributes": {
            "type": "Case",
            "url": "http://google.com"
          },
          "Version_Number": 0
        }
      ],
      "done": true
    },
    "status": 0
  }
]

我需要获取“记录”的属性。我有后续代码工作,只需要使用“记录”中的值创建一个 json 对象。所需的输出 json 对象是:

{"records": [
        {
          "Owner_Name": "User Group",
          "Creation_Date": "2020-12-15",
          "attributes": {
            "type": "Case",
            "url": "http://google.com"
          },
          "Version_Number": 0
        }

在尝试将 jArr 视为 json 对象时,我遇到了 json 数组和 json 对象不兼容的问题。有人可以建议一种方法来做到这一点

标签: javajsonparsing

解决方案


将流作为单个字符串加入。使用 try-with-resources 使 BufferedReader 关闭。

String result;
try (Stream<String> stream = reader.lines()) {
    result = stream.collect(Collectors.joining());
}

推荐阅读