这是小弟我杠杠学习安卓 发现没有php json_decode这种类似的代码所以就写了这个类.写的不好还望多指教
package com.example.helloworld;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JsonToMap {
/**
* 得到php的json反解析为Map
* @param phpStrJson
* @return
*/
public static Map PhpJsonDecode(String phpStrJson){
Map map = new HashMap();
try {
JSONObject jsonObject = new JSONObject (phpStrJson);
Iterator it = jsonObject.keys();
while(it.hasNext()){
String key = (String) it.next();
String value = jsonObject.getString(key);
try{
JSONObject valueJson = jsonObject.getJSONObject(key);
map.put(key,PhpJsonDecode(value));
}catch(Exception e){
map.put(key,value);
}
}
} catch (JSONException e) {
Log.e("jsonToMap","jsonToMap error = "+e.getMessage());
}
return map;
}
public static String printMap(Map map)
{
int layer= 1;
return "\n\rarray("+printMap(map,layer)+"\n\r);";
}
/**
*
* @param map
* @param layer
* @return
*/
public static String printMap(Map map,int layer)
{
String blank = String.format("%-"+layer+"s", " ");
String MapInfo ="";
String ArrHeadStr = "\n\r "+blank+"array(\n\r"+blank+" ";
String ArrFootStr = "\n\r "+blank+"),";
for (Object key : map.keySet()) {
boolean isMap = map.get(key) instanceof Map;
if(isMap){
MapInfo += ArrHeadStr+"[" + key.toString()+"] => ";
MapInfo += printMap((Map) map.get(key), (layer+4));
MapInfo += ArrFootStr;
}else{
MapInfo += ArrHeadStr+"[" +key.toString() +"]" + " => " + map.get(key).toString();
MapInfo += ArrFootStr;
}
}
return MapInfo;
}
}
以下是如和使用
String xxx = bunde.getString("xx");
Map map = JsonToMap.PhpJsonDecode(xxx);
String jsonStr = JsonToMap.printMap(map);
Log.e("net","jsonMap = "+jsonStr);
以下是效果图