2017-05-26 191 views
0

我写了一个程序,读取一个简单的JSON文件:阅读JSON文件

public static void main(String[] args) { 
    JSONParser parser = new JSONParser(); 
    try { 
     JSONArray a = (JSONArray) parser.parse(new FileReader("C:/Users/Zonoid/Desktop/EQ.json")); 
     for (Object o : a) 
     { 
      JSONObject obj = (JSONObject) o; 
      String city = (String) obj.get("CITY"); 
      System.out.println("City : " + city); 
      String loc = (String) obj.get("LOCATION"); 
      System.out.println("Location : " + loc); 
      long el = (Long) obj.get("E_LEVEL"); 
      System.out.println("Emergency Level : " + el); 
      long depth = (Long) obj.get("DEPTH"); 
      System.out.println("Depth : " + depth); 
      long i = (Long) obj.get("INTENSITY"); 
      System.out.println("Intensity :"+i); 
      System.out.println("\n"); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
} 

与我的JSON文件的存在:

[{"CITY":"MUMBAI","LOCATION":"a" ,"E_LEVEL": 6,"DEPTH":10,"INTENSITY":5}, 
{"CITY":"MUMBAI","LOCATION":"b" ,"E_LEVEL": 8,"DEPTH":20,"INTENSITY":4}, 
{"CITY":"MUMBAI","LOCATION":"c" ,"E_LEVEL": 3,"DEPTH":13,"INTENSITY":5}, 
{"CITY":"MUMBAI","LOCATION":"d" ,"E_LEVEL": 6,"DEPTH":12,"INTENSITY":4},] 

我工作的一个项目是处理地震警报并希望阅读他们的JSON文件,但是我无法将它们导入到JSON数组中。该文件我想进口看起来像这样:

{ 
    "type": "FeatureCollection", 
    "metadata": { 
    "generated": 1488472809000, 
    "url": "https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/summary\/significant_week.geojson", 
    "title": "USGS Significant Earthquakes, Past Week", 
    "status": 200, 
    "api": "1.5.4", 
    "count": 2 
    }, 
    "features": [ 
    { 
     "type": "Feature", 
     "properties": { 
     "mag": 5.5, 
     "place": "42km WSW of Anchor Point, Alaska", 
     "time": 1488420690658,.... 

请告诉一下修改的话。

+0

你发布的代码有什么问题? –

+0

它给出了错误org.json.simple.JSONObject不能转换为org.json.simple.JSONArray \t at practice.json.main(json.java:17) – apoorv

+0

我现在看到。你需要改变你的json文件。 json文件包含一个对象(它以{开始并以}结尾),你希望它成为一个对象数组(以[{开始并以}结尾]开头 –

回答

2

如果您只想从功能中读取数据,首先需要将整个文件作为对象读取。然后你可以通过以下方式读取阵列部分:

Object object = parser.parse(new FileReader("C:/Users/Zonoid/Desktop/EQ.json")); 
JSONObject jasonObject = (JSONObject) object; 
JSONArray features = (JSONArray) jasonObject.get("features"); 
+0

好吧,我的错误是直接使用JSONObject和parser.parse而不进行转换。谢谢您的帮助 – apoorv