Json数据类型转换成list集合对象

最近我负责的一个项目,后台是用ExtJs框架,在使用到编辑表格(EditorGrid)的时候需要修改数据,要做到人性化和简化数据更新,为了 做到这些,需要将改变过的数据以json数据类型返回服务器端,但是返回的json数据类型是多条信息的集合,并且每条数据都有修改数据类型不同的可能, 比如说id为1的这条数据我只修改了这段为name,而id为2的这条信息我修改了name和age这2个字段,则返回的json数据中,将是2个键名不 同的数据。但是在服务器段接受到的数据必须和数据持久打交道,每条数据都将更新到数据库,那么就只能将处理后的json数据变形为Map形式,再将每个 Map存放在List<T>集合里

在这我写了一个util类,用来把json数据类型转化成 List<Map<String,Object>>集合型

 


    /**
     * JSONTOMap,本方法是把JSON数据类型转化成List<Map<String, Object>>集合型
     *
     * @param json
     *            需要装换的JSON数据类型
     * @return
     *            List
     */

 

public static List<Map<String, Object>> JSONTOMap(String json) {
       
        List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
       
        List<String> list = new ArrayList<String>();

        String JSON = json.substring(1, json.length() - 1);
       
        JSON = JSON.replaceAll("},", "}^");
       
        StringTokenizer strTokenizer = new StringTokenizer(JSON, "^");
       
        while (strTokenizer.hasMoreTokens()) {
           
            String token = strTokenizer.nextToken();
           
            list.add(token);
           
        }

        int start = 0;
       
        int end = 0;
       
        int start2 = 0;
       
        int end2 = 0;

        for (int i = 0; i < list.size(); i++) {

            String str = (String) list.get(i);
       
            String key = "";
           
            String value = "";

            Map<String, Object> map = new HashMap<String, Object>();

            for (int j = 0; j < str.length(); j++) {

                String sub = str.substring(j, j + 1);

                if (sub.equals("{")) {
           
                    start = j + 1;
                }
               

                if (sub.equals(",")) {
       
                    start = j + 1;
                }

                if (sub.equals(":")) {
           
                    end = j;
               
                    key = str.substring(start, end);
                   
                    key = key.substring(1, key.length()-1);
                }

                if (sub.equals(":")) {
           
                    start2 = j + 1;
                }

                if (sub.equals(",") || sub.equals("}")) {
           
                    end2 = j;
               
                    value = str.substring(start2, end2);
               
                    if(value.substring(0, 1).equals("\"") && value.substring(value.length()-1,value.length()).equals("\"")){
                        value = value.substring(1, value.length()-1);
                    }
                   
                    map.put(key, value);
                }
            }

            listMap.add(map);
        }
        return listMap;
    }
}
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值