首页 > 解决方案 > 拆分 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 分配给两个不同的对象

标签: javajsonshell

解决方案


尝试这个。

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);
        }   
    }
}

推荐阅读