php json_encode 之后 安卓解json代码 json转map

来源:互联网 发布:非管理员权限安装软件 编辑:程序博客网 时间:2024/06/05 01:00

这是小弟我杠杠学习安卓 发现没有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);

以下是效果图