功能介绍
页面展示的是一个用户的基本信息,和该用户对应的几台车辆的信息,车辆的字段属性都一样。然后可以编辑这些信息,再保存到后台。那么就需要考虑将车辆信息转换为json数组类型的字符串传到后台。也可以传入list但是我没有找到对应的方法。
具体实现
1. 后台回显
我后台返回的是一个User对象和一个Vehicle的List集合。在页面展示时用户信息可以容易渲染,但是车辆信息就不好渲染了,还要考虑考虑到保存时的取值问题。我采用的是将每个车辆信息放在div中,遍历List<Vehicle>动态生成多个div,每个div保存一辆车的信息。div的id值使用【vehicle+当前list的索引】。这样方便后面保存时获取每台车辆信息。
2. div中元素转json
有两种方式:1.可以使用js原生的方式获取到每个车辆div中的元素,获取元素name和value,拼接成json字符串。2.可以使用jquery.serializejson.min.js,将车辆的信息放在各个form中,对form 使用序列化json。
3. json数组转json字符串(避免出现多余的双引号)
// 模拟一个json 字符串;
var jsonStr1 = '{"day":"2019-10-10","brank":"福特","color":"白"}';
var jsonStr2 = '{"day":"2018-05-22","brank":"长安","color":"黑"}';
var jsonStr3 = '{"day":"2017-06-30","brank":"比亚迪","color":"黑"}';
// 下面是 将转换过程
// 1. 先创建一个数组
var arr = [];
// 2. 将json字符串转变为json对象
var json1 = JSON.parse(jsonStr1);
var json2 = JSON.parse(jsonStr2);
var json3 = JSON.parse(jsonStr3);
// 3. 将json对象放入数组
arr.push(json1);
arr.push(json2);
arr.push(json3);
// 4: 将数组转为字符串
var arrStr = JSON.stringify(arr);
// arrStr : [{"day":"2019-10-10","brank":"福特","color":"白"},{"day":"2018-05-22","brank":"长安","color":"黑"},{"day":"2017-06-30","brank":"比亚迪","color":"黑"}]
console.log(arrStr);
4. 重点
1>. 首先是要创建一个数组对象。
2>. 数组对象中放入的是json对象,并不是字符串。最后对数组进行json字符串转换。
5. 编码过程中尝试过得错误写法
网上大部分搜索到的是对json 先进行JSON.stringify()转换,或者对数组进行多次转换,这都会造成最后的结果出现多余的双引号,传入到后台不能使用。