android json解析成map格式

   "discount": {
                "3": "34",
                "4": "33",
                "5": "32",
                "6": "31",
                "7": "35"
            },

先看json数据
之前使用的是gson解析,把discount写成Object格式,但是通过解析之后转成String类型,成为

{3=34, 4=33, 5=32, 6=31, 7=35}

这种明显没有办法解析成map集合
使用原始的Json解析,一层一层的找到这个对象,转成String类型成为

{"3":"34","4":"33","5":"32","6":"31","7":"35"}

这种情况下就可以了 之后是copy的解析方法
第一种方法是

   String str = "{\"3\":\"34\", \"4\":\"33\", \"5\":\"32\", \"6\":\"31\", \"7\":\"35\"}";
                            Map map = Json.parseObject(str,Map.class);

第二种是

public class JsonMap {
    /**

     *   将json 数组转换为Map 对象

     * @param jsonString

     * @return

     */

    public static Map getMap(String jsonString)

    {
        JSONObject jsonObject;
        try
        {
            jsonObject = new JSONObject(jsonString);   @SuppressWarnings("unchecked")
        Iterator keyIter = jsonObject.keys();
            String key;
            Object value;
            Map valueMap = new HashMap();
            while (keyIter.hasNext())
            {
                key = (String) keyIter.next();
                value = jsonObject.get(key);
                valueMap.put(key, value);
            }
            return valueMap;
        }
        catch (JSONException e)
        {
            e.printStackTrace();
        }

        return null;

    }



    /**
     * 把json 转换为ArrayList 形式
     * @return
     */
    public static List> getList(String jsonString)
    {
        List> list = null;
        try
        {
            JSONArray jsonArray = new JSONArray(jsonString);
            JSONObject jsonObject;
            list = new ArrayList>();
            for (int i = 0; i < jsonArray.length(); i++)
            {
                jsonObject = jsonArray.getJSONObject(i);
                list.add(getMap(jsonObject.toString()));
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return list;

    }
  Map map =new ArrayMap<>();
        map=JsonMap.getMap(你的json字符串);

这样就可以获取到map集合了

你可能感兴趣的:(android json解析成map格式)