2014-03-27 35 views

回答

1

如果你有对字符串/字符串的,你可以很容易地通过这种方式恢复:

JSONObject obj = new JSONObject(msg); 
Iterator<String> keys = obj.keys(); 
HashMap<String, String> map = new HashMap<String, String>(); 
while(keys.hasNext()) { 
    String key = keys.next(); 
    map.put(key, obj.optString(key)); 
} 
1

你问如何解析,但我没有看到任何JSON在你的问题进行解析。

一个实例解析方法,无需任何库看起来像这样:

JSONObject jo = new JSONObject(response); 
JSONArray rootArray= jo.getJSONArray("jArray"); 
int rootArrayLength=rootArray.length(); 
for(int i=0;i<rootArrayLength;i++){ 
    int id= rootArray.getJSONObject(i).getInt("value"); 
    // do same for others too and create an object 
} 
// create object and make a list 

您也可以从我的其他的回答选择以比较: Convert String to JsonArray

0

你可以在这里查看我的回答对JSON解析:

https://stackoverflow.com/questions/21872643/about-json-parsing-exchange-data-with-rest-services/21872688#21872688

为了完整性,请查看细节bel ow:

JSONObject是JSON解析的关键类。这个类代表在键/值对JSON数据,其中值可以是任何类型的:一个JSONObjects,JSONArrays,字符串,布尔,整数,长整型,双打

创建的JSONObject为:

JSONObject jObject = new JSONObject(result); 

其中结果是您从HTTPRequest获得的响应。

使用此jObject使用特定名称来获得不同的类型:

字符串:

String jsonString = jObject.getString("NAME"); 

阵:

JSONArray jsonArray = jObject.getJSONArray("NAME"); 

EG。为了解析这些地方的结果我用下面的函数,其中JSON是一样的东西:

"results" : [ 
{ 
"geometry" : { 
    "location" : { 
     "lat" : 36.817729, 
     "lng" : 10.18206 
    } 
}, 
"icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png", 
"id" : "35a4f720fff88e2cfb94d64bfd7dbe95a8b4a632", 
"name" : "Banque Al-Baraka", 
"reference" : "CoQBcwAAAJbocdTKVg8I8CzgDdNtBQQaMsaghRlks-IWYl9eDNmFtftPHMgEfVeek_NHJZ2AN9JbiMda1WvREmoeIHBHsNdz9i7gtBaLM1xB93uhema_oswpqD-eRQ9b3fvTo4MhTOeIa7cRJ70BSEtDMONZqFyjqlGvL-5WsiwmqI1F3Vp_EhArWzyFuNrJdly2cHRBNxUJGhQjlcyHs-U2F0ILpN-ce-PHEesdqA", 
"types" : [ "bank", "finance", "establishment" ], 
"vicinity" : "88 P9, Tunis" 
    }, 
    { 
"geometry" : { 
    "location" : { 
     "lat" : 36.861635, 
     "lng" : 10.164628 
    } 
}, 
"icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png", 
"id" : "da42093835270f902f64bc870154e6787fffbc7b", 
"name" : "Agence Ennasr", 
"reference" : "CnRwAAAAoh-XuMXghUKtv2UtHQJiRXB0ZugUnAkJIyP-vBd2YzTj5GdwIb5XhUS9x5-uY9_OwyQUdMmUeDHYm4KXHFNvOoj7diOOHAGBu-xCI4svIxcCwQ2w063mc2G3lohiScYMNpbKhwnCaggt0H1iknZY6xIQxDvNwVN0wWkVwO8zf_El5hoUwHgmgFflE31LDLj2_rr0uc1zvZM", 
"types" : [ "bank", "finance", "establishment" ], 
"vicinity" : "Avenue de Hédi Nouira, Ariana" 
    }, 
] 

解析JSON阵列

public ArrayList<HashMap<String,String>> parseResult(JSONObject jsonObject) throws JSONException  {   
    JSONArray jsonArray = jsonObject.getJSONArray(Constants.RESULTS); 
    ArrayList<HashMap<String, String>> placesList = new ArrayList<HashMap<String,String>>(); 
    for (int i = 0; i < jsonArray.length(); i++) { 
     Object object = jsonArray.get(i); 
     if (object instanceof JSONObject) { 
      placesList.add(parsePlaceInfo((JSONObject) object)); 
     } 
    } 
    return placesList; 
    } 

解析简单的JSON对象

private HashMap<String, String> parsePlaceInfo(JSONObject place) throws JSONException { 
    String name = place.getString(Constants.NAME); 
    String icon = place.getString(Constants.ICON); 
    String vicinity = place.getString(Constants.VICINITY); 
    JSONObject locationObject = place.getJSONObject(Constants.GEOMETRY).getJSONObject(Constants.LOCATION); 
    String lat = locationObject.getString(Constants.LAT); 
    String lng = locationObject.getString(Constants.LNG); 
    HashMap<String, String> placeDetails = new HashMap<String, String>(); 
    placeDetails.put(Constants.NAME, name); 
    placeDetails.put(Constants.ICON, icon); 
    placeDetails.put(Constants.VICINITY, vicinity); 
    placeDetails.put(Constants.LAT, lat); 
    placeDetails.put(Constants.LNG, lng); 

    return placeDetails; 
} 

请注意,这不是一个完整的代码。我正在为您提供主要细节。如果您需要关于代码的任何具体细节,请告诉我。谢谢!