java - 解析 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 对象不兼容的问题。有人可以建议一种方法来做到这一点
解决方案
将流作为单个字符串加入。使用 try-with-resources 使 BufferedReader 关闭。
String result;
try (Stream<String> stream = reader.lines()) {
result = stream.collect(Collectors.joining());
}
推荐阅读
- javascript - 我想从本地存储中删除特定对象
- azure - 关于 terraform 脚本行为
- java - 对 Microsoft Graph API 的 Java 请求执行正常,但返回 500
- ansible - 根据键过滤字典
- rust - 如何在 Rust 中使用任意文本作为函数名?
- cakephp - beforeSave 方法在 cakephp3 中不起作用
- javascript - Typescript 不允许在 URLSearchParams 中使用数字/数组
- c# - Jquery ajax 请求显示 json 对象而不是警报
- python - python中使用websockets库和asyncio的通用websocket客户端
- python - 如何将json数据帧转换为普通数据帧?