Java读取json:从json对象内部的json数组中读取数据

Java读取json:从json对象内部的json数组中读取数据,java,json,jsonparser,simplejson,Java,Json,Jsonparser,Simplejson,我想用java读取json文件。 我的json文件的内容如下 { "ServiceData": { "ServiceInfo": [ { "trav": "20200131T173017Z", "real": "MyService", "lintruntime": "7", "upload": "184", "build": "1717", "buildproduc

我想用java读取json文件。 我的json文件的内容如下


{
  "ServiceData": {
    "ServiceInfo": [     
      {
        "trav": "20200131T173017Z",
        "real": "MyService",
        "lintruntime": "7",
        "upload": "184",
        "build": "1717",
        "buildproductruntime": "1709",
        "EXITCODE": "0",
        "totaltime": "3610"
      },
      {
        "trav": "20200131T173024Z",
        "real": "ERSampleService1",
        "lintruntime": "38",
        "upload": "381",
        "build": "1765",
        "buildproductruntime": "1767",
        "EXITCODE": "0",
        "totaltime": "3913"
      }
    ]
  }
}
我在下面尝试过使用简单的json,但它不起作用,如何做到这一点

public static void main(String args[])
    {
         try {
              Object obj = new JSONParser().parse(new FileReader("metricDataFinal.json"));  
              JSONObject jo = (JSONObject) obj; 
              Map ServiceData = ((Map)jo.get("ServiceData")); 
              Iterator<Map.Entry> itr1 = ServiceData.entrySet().iterator(); 
                while (itr1.hasNext()) { 
                     JSONArray ja = (JSONArray) jo.get("ServiceInfo"); 
                     Iterator itr2 = ja.iterator(); 

                     while (itr2.hasNext())  
                     { 
                         itr1 = ((Map) itr2.next()).entrySet().iterator(); 
                         while (itr1.hasNext()) { 
                             Map.Entry pair = itr1.next(); 
                             System.out.println(pair.getKey() + " : " + pair.getValue()); 
                         } 
                     } 
                    Map.Entry pair = itr1.next(); 
                   // System.out.println(pair.getKey() + " : " + pair.getValue()); 



                } 

         }catch(Exception e)
         {

         }
}


publicstaticvoidmain(字符串参数[])
{
试一试{
Object obj=new JSONParser().parse(新文件读取器(“metricDataFinal.json”);
JSONObject jo=(JSONObject)obj;
Map ServiceData=((Map)jo.get(“ServiceData”);
迭代器itr1=ServiceData.entrySet().Iterator();
而(itr1.hasNext()){
JSONArray ja=(JSONArray)jo.get(“ServiceInfo”);
迭代器itr2=ja.Iterator();
while(itr2.hasNext())
{ 
itr1=((映射)itr2.next()).entrySet().iterator();
而(itr1.hasNext()){
Map.Entry pair=itr1.next();
System.out.println(pair.getKey()+“:”+pair.getValue());
} 
} 
Map.Entry pair=itr1.next();
//System.out.println(pair.getKey()+“:”+pair.getValue());
} 
}捕获(例外e)
{
}
}
如何从json中读取数据我想对这些数据进行处理 如果有人知道怎么做,请告诉我,试试下面的代码:

Object obj = new JSONParser().parse(new FileReader("metricDataFinal.json"));
            JSONObject jo = (JSONObject) obj;
            Map ServiceData = ((Map) jo.get("ServiceData"));
            Iterator<Map.Entry> itr1 = ServiceData.entrySet().iterator();
            while (itr1.hasNext()) {
                JSONArray ja = (JSONArray) ServiceData.get("ServiceInfo");
                Iterator itr2 = ja.iterator();
                while (itr2.hasNext()) {
                    itr1 = ((Map) itr2.next()).entrySet().iterator();
                    while (itr1.hasNext()) {
                        Map.Entry pair = itr1.next();
                        System.out.println(pair.getKey() + " : " + pair.getValue());
                    }
                }
                Map.Entry pair = itr1.next();
                // System.out.println(pair.getKey() + " : " + pair.getValue());


            }

        } catch (Exception e) {
            e.printStackTrace();
        }
Object obj=new JSONParser().parse(新文件读取器(“metricDataFinal.json”);
JSONObject jo=(JSONObject)obj;
Map ServiceData=((Map)jo.get(“ServiceData”);
迭代器itr1=ServiceData.entrySet().Iterator();
while(itr1.hasNext()){
JSONArray ja=(JSONArray)ServiceData.get(“ServiceInfo”);
迭代器itr2=ja.Iterator();
while(itr2.hasNext()){
itr1=((映射)itr2.next()).entrySet().iterator();
while(itr1.hasNext()){
Map.Entry pair=itr1.next();
System.out.println(pair.getKey()+“:”+pair.getValue());
}
}
Map.Entry pair=itr1.next();
//System.out.println(pair.getKey()+“:”+pair.getValue());
}
}捕获(例外e){
e、 printStackTrace();
}

您在迭代器中尝试获取
ServiceInfo
对象时出错。您错误地试图从
jo
对象中获取该对象,但该对象位于
ServiceData
对象中。

是否可以打印e.stackTrace()并查看异常情况(如果有)?什么东西对你不起作用?它给了你。。。。。。。。。。。。。。。。。。ParseJson.main(ParseJson.java:28)处的java.lang.NullPointerException将str替换为
新文件读取器(“metricDataFinal.json”)
@XOR我已经编辑了我的答案。请看一看。