gpt4 book ai didi

java - 将InputStream解析为Json对象并获取值

转载 作者:搜寻专家 更新时间:2023-11-01 03:23:16 28 4
gpt4 key购买 nike

响应json:

{
"filename": "vcops-6.0.0-MPforAWS-1.1-1695068.pak",
"links": [
{
"rel": "pak_information",
"href": "https://<IP>:443/casa/upgrade/cluster/pak/MPforAWS-600/information"
},
{
"rel": "pak_file_information",
"href": "https://<IP>:443/casa/upgrade/slice/pak/MPforAWS-600/file_information"
},
{
"rel": "pak_cluster_status",
"href": "https://<IP>:443/casa/upgrade/cluster/pak/MPforAWS-600/status"
}
],
"pak_id": "MPforAWS-600"
}

我正在使用我们现有框架的一个助手。框架将响应返回为“InputStream”。我想从这个“InputStream”中得到“pak_id”。我尝试使用 inputStreamObj.toString() 这对我不起作用。

我使用的方法是:

private String getPakId(InputStream uploadResponse) {
String pakId = null;
try {
String responseString = readInputStream(uploadResponse);
JSONObject jObj = new JSONObject(responseString);
pakId = jObj.getString("pak_id").trim();
Reporter.log("Pak id is=" + pakId, true);
} catch (Exception e) {
Reporter.log("Error in getting pak_id " + e.getMessage(), true);
}
return pakId;
}

private String readInputStream(InputStream inputStream) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream, "UTF-8"));
String tmp;
StringBuilder sb = new StringBuilder();
while ((tmp = reader.readLine()) != null) {
sb.append(tmp).append("\n");
}
if (sb.length() > 0 && sb.charAt(sb.length() - 1) == '\n') {
sb.setLength(sb.length() - 1);
}
reader.close();
return sb.toString();
}

最佳答案

如果您查看 InputStream 的文档,您会注意到它不会向您保证 toString 会向您显示流的内容。

如果您对实际流式传输流不感兴趣(如果您希望响应很小,这是合理的,就像这里的情况一样),可以先从流中获取所有字节,将将它们转换成String,然后解析String

要从 InputStream 中获取 String,我建议使用来自 apache commons-ioIOUtils.toString .

关于java - 将InputStream解析为Json对象并获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23057064/

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