java - 拆分 Json 输出并将其分配给两个不同的对象
问题描述
这是我的 Java:它将在哪里运行 shell 脚本并获得输出:
public static void main(String[] args) throws IOException, JSONException {
ProcessBuilder pb = new ProcessBuilder("/test.sh");
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
{
JSONObject jSONObject = new JSONObject(line);
System.out.println("Parsed JSON : " + jSONObject);
}
}
}
这是我的输出:
Parsed JSON : {"network-metrics":{"interfaces":["eth0",{"status":{"TX":{"carrier":"0","bytes":"54835108","dropped":"0","overruns":"0","packets":"356928","errors":"0"},"RX":{"bytes":"739960761","dropped":"68","overruns":"0","packets":"766292","errors":"0","frame":"0"}}},"lo",{"status":{"TX":{"carrier":"0","bytes":"185357","dropped":"0","overruns":"0","packets":"967","errors":"0"},"RX":{"bytes":"185357","dropped":"0","overruns":"0","packets":"967","errors":"0","frame":"0"}}},"mlan0",{"status":{"TX":{"carrier":"0","bytes":"30056","dropped":"0","overruns":"0","packets":"542","errors":"0"},"RX":{"bytes":"275867466","dropped":"0","overruns":"7229","packets":"272573","errors":"272573","frame":"0"}}}]}}
Parsed JSON : {"os-metrics":{"NumberOfProcess":"242","Up Time":"8 hours, 7 minutes","Disk Usage":"33%","CPU Usage":"5.77916%"}}
所以在这里。如何将 network-metric 和 os-metrics 分配给两个不同的对象
解决方案
尝试这个。
public static void main(String[] args) throws IOException, JSONException {
ProcessBuilder pb = new ProcessBuilder("/test.sh");
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
// Initialize 2 JSON Objects
JSONObject networkMetrics = new JSONObject();
JSONObject osMetrics = new JSONObject();
while ((line = reader.readLine()) != null)
{
JSONObject jSONObject = new JSONObject(line);
System.out.println("Parsed JSON : " + jSONObject);
// Get the JSON Objects if they exist
if (jSONObject.has("network-metrics")) {
networkMetrics = jSONObject.getJSONObject("network-metrics");
System.out.println("Network Metrics JSON : " + networkMetrics);
}
if (jSONObject.has("os-metrics")) {
osMetrics = jSONObject.getJSONObject("os-metrics");
System.out.println("OS Metrics JSON : " + osMetrics);
}
}
}
推荐阅读
- sql-server - 使用游标更新大量数据的问题
- javascript - 如何修复使用正则表达式验证用户名/密码的 .addEventListener 按钮
- opencv - 'cv2.cv2' 没有属性 'face'
- python - python中的staticmethod和classmethod不可调用吗?
- node.js - 如何在 node.js 中使用 elasticsearch 附件处理器
- flyway - 当脚本中指定“set serverout on”时,Oracle 迁移的 Flyways 命令行失败,即使是企业版
- symfony - Symfony 3.4:找不到存储库方法
- python - 更新服务错误(Google Cloud - Flask App)
- javascript - 使用 Firebase 的 Firestore 高效(持续)更新聊天消息
- angular - 有没有办法让键盘不在离子输入之上?