zoukankan      html  css  js  c++  java
  • Map.toString()之后生成的字符串如何转回Map

    众所周知,Map.toString()方法返回的字符串有点个性,如下:

     {legalName=张XXX, idBase=0, legalIdCard=340404198X1223103X}
    

    而我们一般需要的是这种:

    {"legalName":"张XXX","idBase":"0","legalIdCard":"340404198X1223103X"}
    

    而一旦使用了Map的toString()是无法再通过任何方法转回来map的,在此之前我曾经使用过

    net.sf.json.JSONObject.fromObject(map.toString()).toString())
    

    我天真的以为这是可以的,结果明显不行,不支持中文且转出来的value不带双引号 ""

    经过研究推出如下方法:

    public  Map<String,Object> mapStringToMap(String stringMap){
        Map<String,Object> map = new HashMap<>();
        String[] strings = stringMap.split(",");
        for (String str : strings) {
            String[] s = str.split("=");
            map.put(s[0],s[1]);
        }
        return map;
    }
    

    测试类如下:

    @Test
    public void test1(){
        Map map = new HashMap();
        map.put("legalName","张XXX");
        map.put("idBase","0");
        map.put("legalIdCard","340404198X1223103X");
        System.out.println(JSON.toJSONString(map));
        //        System.out.println(((JSONObject) JSON.toJSON(map)).toString());
        System.out.println("map.tosting: " + map.toString());
        Map<String, Object> stringObjectMap = mapStringToMap(map.toString().replaceAll("[{]","").replaceAll("[}]",""));
        System.out.println(JSON.toJSONString(stringObjectMap).replaceAll(" ",""));
    }
    
    

    结果如下:

    {"legalName":"张XXX","idBase":"0","legalIdCard":"340404198X1223103X"}
    map.tosting: {legalName=张XXX, idBase=0, legalIdCard=340404198X1223103X}
    {"legalName":"张XXX","idBase":"0","legalIdCard":"340404198X1223103X"}
    

    可见是可行的,但网上很多方法都忽略了很多细节,比如{}需要去掉如若不去掉转换出来的map是嵌套{{}}的,多了一层{},

    {"{legalName":"张XXX","idBase":"0","legalIdCard":"340404198X1223103X}"}
    

    又比如最终转回来需要的字符串要去掉空格,否则效果如下:

    {"legalName":"张XXX"," idBase":"0"," legalIdCard":"340404198X1223103X"}
    

    注意看是有空格的。
    自己可以将替换和排空操作加入到封装好的方法里,提高可用性。

    至此,结束。

  • 相关阅读:
    你要结婚了丶
    20150806这是个悲伤的日子。
    今天是我的生日。
    这是从word发的第一篇博客。
    【关于JavaScript】自动计算的实例
    【关于JavaScript】常见表单用户名、密码不能为空
    【关于php】Appserv中关于DW配置站点问题
    【关于php】Appserv的安装注意事项
    【无题】写在5月18日
    HTML中如何添加日历插件(JQUERY)
  • 原文地址:https://www.cnblogs.com/ttty/p/15090212.html
Copyright © 2011-2022 走看看