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

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

以下是效果图




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值