list字符串转对象listT或者字符串转map
背景介绍
在做接口对接时,遇到一个问题,请求报文中存在一个list,(postman)格式如下:
"reqBody": {"activityType": "2","endDate": "2020-09-26","merchantId": "5313e02e36034e22abbcda51be8d8645","startDate": "2019-09-27","list": [{"productId": "1e14a7a24af44ecea1ec50c102bf219b","productSecDiscount": 1},{"productId": "1e14a7a24af44ecea1ec50c102bf219b","productSecDiscount": 1}]}
因为公司系统使用了自定义的拦截器,导致不能使用@RequestBody直接接收list中的内容,只能使用string收list。
那问题来了,前台接收到的字符串格式如下:
“[{productId=02e357356e2a4e0388a7f0cb7e327996, productSecDiscount=7.0},{productId=311bc5df8d3841e983ce2f4ab9f2426d, productSecDiscount=8.0}]”
这个字符串并不是标准的json串,但是格式却还算标准。
问题分析
- 刚开始,并没有注意到,直接当成了json进行处理,导致各种报错,后来比对了一下,才发现不是标准的json串
- 直接比较来看的话,是去掉了接收参数中的双引号,且将冒号换成了等号。其实这个就是List调用toString后的结果。
下面是自己试验的一个小demo
System.out.println("打印map");List<Map<String,String>> list = new ArrayList<>();Map<String,String> map = new HashMap<>();map.put("name","zhangsan");map.put("age","22");list.add(map);Map<String,String> map1 = new HashMap<>();map1.put("name1","zhangsan");map1.put("age1","22");list.add(map1);System.out.println(list.toString());
输出:
打印map
[{name=zhangsan, age=22}, {name1=zhangsan, age1=22}]
问题解决
使用Gson进行转换
- 确认字符串格式,需方括号进行包裹 [],如:
“[{name=zhangsan, age=22}, {name1=zhangsan, age1=22}]”
- 使用Gson进行转化,其中MarketActivityAddDetail是我的泛型对象,当然这里也可以换成map,间接的实现string和map之间的转换
Gson gson = new Gson();List<MarketActivityAddDetail> list =gson.fromJson(marketActityVo.getList(), new TypeToken<List<MarketActivityAddDetail>>() {}.getType());
- 验证
请求参数:
处理结果:
成功赋值,验证通过
总结
因为之前直接把字符串当做了json串处理,浪费了不少时间。要善于发现数据的规律性,否则就只能使用字符串处理的方法进行分割和赋值了,那种方法肯定相当揉乱且低效,之前一直想用JSONArray或者JSONObject处理,但是没有成功,使用Gson处理的话就相当的高效。
本文关键参考 https://blog.csdn.net/hiqingtian/article/details/79448760
list字符串转对象listT或者字符串转map相关推荐
- 冒泡排序和字符串(String)对象及处理字符串的方法
冒泡排序 第一种方法var times=0;var arr=[12,3,6,9,77,37];for(var i=0;i<arr.length-1;i++){ //控制比较的行数for (var ...
- html对象转成字符串,4.对象转化为字符串
4_对象转化为字符串 14:56 思维导图.png 序列化,指将 JavaScript 值转化为 JSON 字符串的过程. JSON.stringify() 能够将 JavaScript 值转换成 J ...
- Json对象和Json字符串
JSON对象 有时候在做项目的时候时常将这两个概念弄混淆,尤其是在使用springmvc的时候,后台@RequestBody接受的是一个json格式的字符串,一定是一个字符串. 先介绍一下json对 ...
- MySQL 学习笔记(12)— 数据类型(定长字符、变长字符、字符串大对象、数字类型、日期时间类型、二进制类型)
MySQL 常见的数据类型有字符串类型.数字类型.时间类型.二进制类型.具体的分类如下图: 1. 字符串类型 字符串类型用于存储字符和字符串数据,主要包含三种具体的类型:定长字符串.变长字符串以及字符 ...
- JavaScript对象、JSON对象、JSON字符串的区别
一.首先看下什么是JSON JSON:JavaScript Object Natation,JavaScript对象的表现形式,已经发展成一种轻量级的数据交换格式. JavaScript对象的表现形式 ...
- Json字符串和对象相互转换
文章目录 1.JsonUtil 工具类 把对象转换为json字符串 把json字符串转换为对象 把json字符串转换为List集合 2.Gson 把对象转换为json字符串 把json字符串转换为对象 ...
- java处理json字符串_常见java对象转换为json字符串处理!!!
1.JSON简介 1. 概念: JavaScript Object NotationJavaScript对象表示法 Person p = new Person(); p.setName("张 ...
- java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
- json对象和json字符串转换方法
在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...
最新文章
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可回滚)
- wireshark合并多个文件_小技巧:快速合并多个excel文件(收藏版)
- python日期加减源码_Python 时间序列的时间延迟计算
- windows API 实现截图
- Quartz框架基于Calendar的排除规则
- docker下gitlab安装配置使用(完整版)
- 2019.08.29定时器以及轮播图
- class属性表种类集合,以及字段详解
- 大文件上传下载实现思路,分片、断点续传代码实现,以及webUpload组件
- java批量控制安卓手机_安卓手机屏幕投射到电脑以及一台电脑控制多台手机技术原理浅析...
- php 汇率接口,PHP 对交易对汇率 转换
- ps.execute()不能当作执行结果反馈,需要用getResultSet或getUpdateCount
- PS 把两张图片融合为一张
- ACE编辑器ace-editor笔记
- win10下VMware15安装centos7详细步骤及遇到的问题
- 2023北京老博会,CISSE中国国际养老服务业博览会
- C语言检测是否加入一个QQ群,判断登录的QQ是否已经加入指定的QQ群
- 计算机网络-常用英文简写大全
- 微型计算机原理与接口技术(周荷琴 冯焕清)第六版 课后习题答案 第一章(部分答案)
- 兔老大的系统设计(二)定时系统(延时队列)