zoukankan      html  css  js  c++  java
  • 【Project】JS的Map对象前后交互问题

    这是我在项目中写的一个Map对象:

    let map = new Map();
    
    for (let i = 0; i < type_checked_value.length; i++) {
        let type_id = type_checked_value[i]
        map.set('type_' + type_id + '_quantity', $("#type_" + type_id + "_quantity").val());
        map.set('type_' + type_id + '_score', $("#type_" + type_id + "_score").val());
    }

    我天真的觉得JS自带的JSON对象就可以像Java的那些JSON转换组件一样调用即可实现转换【大雾】

    let jsonMap = JSON.stringify(map);

    用这个方法给后端之后就是一个空括号了,在java这里接受就是这个结果:

    {}

    然后找到了这个办法,可以实现JS的Map对象转换JSON

    // JS map对象转换Json方法 https://blog.csdn.net/Jac__Xu/java/article/details/80969219
            function mapToJson(m) {
                var str = '{';
                var i = 1;
                m.forEach(function (item, key, mapObj) {
                    if(mapObj.size == i){
                        str += '"'+ key+'":"'+ item + '"';
                    }else{
                        str += '"'+ key+'":"'+ item + '",';
                    }
                    i++;
                });
                str +='}';
                //console.log(str);
                return str;
            }

    传到了后台之后就是这个效果了:

    {"type_2_quantity":"2","type_3_score":"5","type_1_score":"4","type_1_quantity":"2","type_3_quantity":"3","type_2_score":"5"}

    在Java这里就使用了FastJson来处理转换的:

        @Test
        public void parseJavaScriptMapObject(){
            String json = "{"type_2_quantity":"2","type_3_score":"5","type_1_score":"4","type_1_quantity":"2","type_3_quantity":"3","type_2_score":"5"}";
            // JSON.parseObject(json);
            Map map = JSON.parseObject(json);
    
            System.out.println(map);
    
            Object type_2_quantity = map.get("type_2_quantity");
            System.out.println(type_2_quantity);
        }

    测试的结果是能取到值的

    {"type_2_quantity":"2","type_3_score":"5","type_1_score":"4","type_1_quantity":"2","type_3_quantity":"3","type_2_score":"5"}
    2
    
    Process finished with exit code 0

    大概就这样了,没有别的补充

  • 相关阅读:
    微信坚硬的后脚跟
    [项目整理]Win32,MFC的可执行文件只能运行一次
    美司法部索要维基解密志愿者谷歌账户内容
    QML性能
    OSGi 的核心配置、动态化及问题
    OSGi 的由来和本质特性
    机器视觉与计算机视觉
    人工智能与深度学习
    活着就能改变世界
    选择与执行
  • 原文地址:https://www.cnblogs.com/mindzone/p/13276964.html
Copyright © 2011-2022 走看看