android json解析成map格式

作者: Ready_I | 来源:发表于2017-11-24 15:33 被阅读0次
       "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<String,String> map = Json.parseObject(str,Map.class);
    

    第二种是

    public class JsonMap {
        /**
    
         *   将json 数组转换为Map 对象
    
         * @param jsonString
    
         * @return
    
         */
    
        public static Map<String, Object> getMap(String jsonString)
    
        {
            JSONObject jsonObject;
            try
            {
                jsonObject = new JSONObject(jsonString);   @SuppressWarnings("unchecked")
            Iterator<String> keyIter = jsonObject.keys();
                String key;
                Object value;
                Map<String, Object> valueMap = new HashMap<String, Object>();
                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<Map<String, Object>> getList(String jsonString)
        {
            List<Map<String, Object>> list = null;
            try
            {
                JSONArray jsonArray = new JSONArray(jsonString);
                JSONObject jsonObject;
                list = new ArrayList<Map<String, Object>>();
                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<String, Object> map =new ArrayMap<>();
            map=JsonMap.getMap(你的json字符串);
    

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

    相关文章

      网友评论

        本文标题:android json解析成map格式

        本文链接:https://www.haomeiwen.com/subject/ekkfbxtx.html