Java8流式解析json实例_java–将InputStream解析为Json对象
并获取值
响应json:
{
"filename": "vcops-6.0.0-MPforAWS-1.1-1695068.pak",
"links": [
{
"rel": "pak_information",
"href": ":443/casa/upgrade/cluster/pak/MPforAWS-600/information"
},
{
"rel": "pak_file_information",
"href": ":443/casa/upgrade/slice/pak/MPforAWS-600/file_information"
},
{
"rel": "pak_cluster_status",
"href": ":443/casa/upgrade/cluster/pak/MPforAWS-600/status"
}
],
"pak_id": "MPforAWS-600"
}
我正在使⽤我们拥有的框架的⼀个帮助器. Framework将响应返回为“InputStream”.
我想从这个“InputStream”获得“pak_id”.我尝试使⽤String()这对我不起作⽤.
我使⽤的⽅法是:
private String getPakId(InputStream uploadResponse) {
String pakId = null;
try {
String responseString = readInputStream(uploadResponse);
JSONObject jObj = new JSONObject(responseString);
pakId = String("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 = adLine()) != null) {
sb.append(tmp).append("\n");
}
if (sb.length() > 0 && sb.charAt(sb.length() - 1) == '\n') {
sb.setLength(sb.length() - 1);
}
reader.close();
String();
}
最佳答案 如果您查看
InputStream的⽂档,您会发现它不会向您保证toString将向您显⽰流的内容.
如果你对实际流式传输不感兴趣(如果你希望响应很⼩,这是合理的,就像这⾥的情况⼀样),可以先从流中获取所有字节,然后将它们放⼊String,然后解析String.
java stream为了从InputStream中获取String,我建议从apache commons-io开始使⽤String.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论