1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > json格式的字符数据转换成map格式

json格式的字符数据转换成map格式

时间:2024-04-29 01:15:38

相关推荐

json格式的字符数据转换成map格式

记录一下,自己写项目中遇到的一个有趣的操作;

比如在后端java中通过查询数据后,从数据库中拿到的原始数据格式如下:(可能数据库中或者是es中存储的时候就是这么以json格式的字符串的形式存储的

但是前端需要的数据格式如下:

颜色:蓝色,黑色,金色,粉色版本:6GB+128GB,4GB+64GB

这种场景的业务还是蛮多的:比如最常见的购物网站中的商品规格的显示:比如

直接使用查询出来的原始数据返回给前端,前端可能不太好进行展示这些规格数据,所以要转成map后然后再返回给前端。

转换规格格式的代码如下:

里面涉及的重点:

1.map的遍历方式 -- 至少掌握那么一两种

2.json格式的字符串数据与各种对象之间的转换 -- 使用工具库

3.使用keySet遍历map的时候,注意要先提前获取一下value,这个操作可以提前对value的数据类型学进行定型。还可以处理null值。

/*** 规格转化方法 开始我们给前端的数据格式 用手机举例* specList 中的数据如下格式:* [* "{'颜色': '蓝色', '版本': '6GB+128GB'}",* "{'颜色': '黑色', '版本': '6GB+128GB'}",* "{'颜色': '黑色'}",* "{'颜色': '蓝色'}",* ]* ======》 前端实际需要的数据格式:* 颜色:【蓝色,黑色,金色,粉色】* 版本:【6GB+128GB,4GB+64GB】** 返回的参数怎么确定?方法应该接收什么类型的参数?* 返回的数据格式上面已经写了,肯定是map的数据,但是map的泛型就有讲究了,我们要保证value里面的数据* 没有重复,所以这里不使用list了,使用的是set;* 接收的参数:我们打算对规格的参数列表进行转换,所以方法的参数肯定是规格参数列表*/public Map<String, Set<String>> formatSpec(List<String> specList){Map<String, Set<String>> resultMap = new HashMap<>();//遍历listfor (String specStr : specList) {//specStr json格式的string串 ====> "{'颜色': '蓝色', '版本': '6GB+128GB'}"Map<String, String> specMap = JSON.parseObject(specStr, Map.class); //颜色:蓝色 版本:6GB+128GB//遍历map map的遍历必须要会那么至少一种for (String key : specMap.keySet()) {//key 颜色 value 蓝色 resultMap.get(key)这个操作着实没有看懂.....// --> 通过查询资料发现这个是keySet遍历的要求:必须先去取一次key的值//但是为什么不用 specMap.get(key) 来取第一次值嘞?当然可以,但是那个时候resultMap的value值就不好赋值了//specMap.get(key)取到的value的值的类型是string,而我们需要的是Set<String>,第一次的getKey(得到的是value)可以帮我们完成keySet对value的数据类型转换Set<String> valueSet = resultMap.get(key); //valueSet:【蓝色,黑色,金色,粉色】if(valueSet == null){valueSet = new HashSet<>();}valueSet.add(specMap.get(key));resultMap.put(key,valueSet);}}return resultMap;}

最后在项目中进行测试:展示结果为

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。