如何从JSON字符串中获取Java对象

时间:2011-09-03 08:17:08

标签: json parsing

如何从此JSON字符串中获取Java对象?我们没有JSON字符串中对象的名称

[
    {
       "eqid": "c0001xgp",
       "magnitude": 8.8,
       "lng": 142.369,
       "src": "us",
       "datetime": "2011-03-11 04:46:23",
       "depth": 24.4,
       "lat": 38.322
  },
  {
       "eqid": "2007hear",
       "magnitude": 8.4,
       "lng": 101.3815,
       "src": "us",
       "datetime": "2007-09-12 09:10:26",
       "depth": 30,
       "lat": -4.5172
 }
]

我找到了这样的代码来解析JSON。 JSONArray

earthquakes = json.getJSONArray("earthquakes");
 for(int i=0;i < earthquakes.length();i++){                      
        HashMap<String, String> map = new HashMap<String, String>();
        JSONObject e = earthquakes.getJSONObject(i);
        map.put("id",  String.valueOf(i));
       map.put("name", "Earthquake name:" + e.getString("eqid"));
       map.put("magnitude", "Magnitude: " +     e.getString("magnitude"));
       mylist.add(map);
   }

但是,以防我们有对象名称:像这样的“地震”

{"earthquakes":[

    {
       "eqid": "c0001xgp",
       "magnitude": 8.8,
       "lng": 142.369,
       "src": "us",
       "datetime": "2011-03-11 04:46:23",
       "depth": 24.4,
       "lat": 38.322
  },
  {
       "eqid": "2007hear",
       "magnitude": 8.4,
       "lng": 101.3815,
       "src": "us",
       "datetime": "2007-09-12 09:10:26",
       "depth": 30,
       "lat": -4.5172
 }
]}

如果我没有“地震”这个名字,我该怎么办?抱歉,我无法为自己添加新答案,所以我只想编辑问题。

1 个答案:

答案 0 :(得分:1)

您可以使用像google-json这样的JSON解析器库,它允许您将此JSON解析为必须定义的强类型Java类。在这种情况下,您将定义一个具有eqidmagnitude等属性的Java类,然后解析器将返回此对象的数组。