【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
大概就这样了,没有别的补充
【Project】JS的Map对象前后交互问题的更多相关文章
- 在js中将map对象转换成json 和 js对cookie的操作
在js中将map对象转换成json //msp转objectlet obj= Object.create(null); for (let[k,v] of map) { obj[k] = v; }//o ...
- js模拟Map对象,实现key---value
js模拟Map对象,实现key---value 根据java中map的属性,实现key----value保存 function Map() { var struct = function (key, ...
- Js中Map对象的使用
Js中Map对象的使用 1.定义 键/值对的集合. 2.语法 mapObj = new Map() 3.备注 集合中的键和值可以是任何类型.如果使用现有密钥向集合添加值,则新值会替换旧值. 4.属性 ...
- js 操作map对象
转自:http://smallvq123.javaeye.com/blog/823923 /* * Map对象,实现Map功能 * * * size() 获取Map元素个数 * isEmpty() 判 ...
- JS中的Map对象
1,js创建map对象 var map = new Map(); 2.将键值对放入map对象 map.set("key",value) map.set("key1&quo ...
- JavaScript Map对象的实现
1. [代码]js代码 /* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() ...
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型, ...
- 转:el表达式获取map对象的内容 & js中使用el表达式 & js 中使用jstl 实现 session.removeattribute
原文链接: ①EL表达式取Map,List值的总结 ②在jsp中使用el表达式通过键获得后台的一个map<Long,String>的值 ③在javascript中使用el表达式(有图有真相 ...
- js es6 map 与 原生对象区别
区别 object和Map存储的都是键值对组合.但是: object的键的类型是 字符串: map的键的类型是 可以是任意类型: 另外注意,object获取键值使用Object.keys(返回数组): ...
- JS Map对象
java和C#等高级语言中都有map这样的键值对,但是js里没有,我们需要这样的,该怎么做呢? 可以自己使用function封装一个map对象,如下所示 function Map() { this.k ...
随机推荐
- uni-app mpvue wepy websocket的介绍
uni-app 网址:https://uniapp.dcloud.io/ uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.H5.以 ...
- kettle从入门到精通 第五十一课 ETL之kettle Avro input
1.我们在学习nifi的过程中有接触到Avro schema,当时我在想kettle应该也支持Avro,果不其然kettle也是支持Avro文件的读和写的.今天我们一起来学习下kettle中如何使用A ...
- C# ML.NET 使用GPU遇到 Failed to get convolution algorithm.This is probably because cuDNN failed to initialize
C# ML.NET 使用GPU遇到 Failed to get convolution algorithm.This is probably because cuDNN failed to initi ...
- TiDB 多集群告警监控-初章-监控融合、自动告警处理
author:longzhuquan 背景 随着公司XC改造步伐的前进,越来越多的业务选择 TiDB,由于各个业务之间需要物理隔离,避免不了的 TiDB 集群数量越来越多.虽然每套 TiDB 集群均有 ...
- 玩转Zabbix智能告警:降噪、排班、认领、升级、IM协同
Zabbix作为一款流行的企业级监控工具,可以监控各种网络设备和服务的状态,并提供强大的告警功能,能够在出现异常情况时及时通知管理员.以下是Zabbix的一些特点: 支持多种监控方式,包括SNMP.J ...
- ElasticSearch基于安装包方式安装
1.下载地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz2.解压 tar -zxvf ...
- python post or get请求demo
# python post or get请求demo import requests; import json; headers={ "Content-Type":"ap ...
- Playbook条件语句
目录 Playbook条件语句 1. when的基本使用 1.1 when的基本示例 1.2比较运算符 1.3 比较运算符示例 1.4 逻辑运算符 1.5 逻辑运算符示例 2. 条件判断与block ...
- python正则表达式替换所有内容并同时保留找到的内容
除了一些专业的工具,例如ue,大部分编程语言的函数包都挺让人迷惑的,例如Java,js. 因为的确有许多功能是很常用的,但是他们又不提供,非得要程序员自己去实现,或者是利用三方的包. 到底是什么理由了 ...
- Linux修改dmesg 显示大小
背景 由于在调试的时候没有串口,而通过dmesg打印的内容发现其中有截断的现象. 因此为了方便调试.将有关的缓冲区加大. 原理 Linux内核中打印内核消息时用到了一个环形缓冲区. 这个缓冲区的大小由 ...