java后台对查询到的商品列表按店铺分组并返回json数据_新手学习

今天做一个购物车列表接口,前端对返回数据要求按店铺名称分组,而且不同店铺分组数据中,商品列表的key要同一个字段,一番查询摸索后,最终用如下代码解决问题,不当之处请大家斧正:

List<ShoppingCart> cartList = shoppingService.getCartList(userId);//这是从数据库获取的购物车商品列表
Map<Integer,List<ShoppingCart>> map = new HashMap<>();//新建一个map,准备用来分组
for (ShoppingCart shoppingCart : cartList) {
    //将结果以店铺Id进行分组
    List<ShoppingCart> groupList = map.get(shoppingCart.getCompanyId());
    if (groupList == null) {
        groupList = new ArrayList<ShoppingCart>();//如果没有获取到,新建组,组名是店铺ID
        groupList.add(shoppingCart);
        map.put(shoppingCart.getCompanyId(), groupList);
    }else{
        groupList.add(shoppingCart);
    }
}//写到这分组就好了,map中key就是组名,值就是对应的商品列表;但前端还要求商品列表的数据key用同一个字段,所以还需要处理
//思路是这样的,再建一个Map,命名为resMap,把上面map中的商品列表数据取出来,再放到新的resMap中,并把新的key命名为"list",然后把这个resMap添加到一个resList集合中;以下是具体步骤
Set<Integer> keys = map.keySet();//把map中的key拿出来,准备依据key取值
List<Map<String,Object>> resList = new ArrayList<>();
for (Integer key : keys) {
    List<ShoppingCart> list = map.get(key);//使用循环,通过Key把map中的数据依次取出来
    Map<String,Object> resMap = new HashMap<>();//每次循环都创建新的resMap
    resMap.put("list", list);//取出来后重新命名添加到新的resMap中
    resMap.put("companyName", list.get(0).getCompanyName());//同时把店铺ID和店铺名字单独拿出来添加进去
    resMap.put("companyId", list.get(0).getCompanyId());
    resList.add(resMap);//把处理好的数据添加到reslist
}
最终的数据格式是这样的:
[{"companyName":"店铺一"
  "companyId":"555"
  "list":商品数据,这里又是一个json数据组
}]
[{"companyName":"店铺二"
  "companyId":"666"
  "list":商品数据,这里又是一个json数据组
}]



原文地址:https://www.cnblogs.com/findtasy/p/9866337.html

时间: 2024-10-10 04:24:45

java后台对查询到的商品列表按店铺分组并返回json数据_新手学习的相关文章

Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据

Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1.?配置条件字段@Conditional 1 1 2. 2.?配置条件字段显示类型为[email protected](displayType?=?displayType.rang,?rangStart?=?rang.start,?rangEnd?=?rang.end,op=op.range) 1 3. #----show  condition  page  list 1 4.

Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据

1. 1.?配置条件字段@Conditional 1 1 2. 2.?配置条件字段显示类型为[email protected](displayType?=?displayType.rang,?rangStart?=?rang.start,?rangEnd?=?rang.end,op=op.range) 1 3. #----show  condition  page  list 1 4. 提交条件查询表单by dwr 1 5. @filter  ::   set filter condition 

用ajax获取后台数据,返回json数据,怎么在前台使用?

用ajax获取后台数据,返回json数据,怎么在前台使用呢? 后台 C# code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == "SearchCustomer")                 {                     int ID;                     if (Int32.TryParse(CustomerID, out ID))                     {    

springmvc,通过ajax方式提交页面数据,后台返回json数据中文信息乱码

本人刚开始接触springmvc,项目搭建参照https://my.oschina.net/gaussik/blog/385697.在用IDEA写登录注册的时候,想通过ajax方式提交数据到后台,然后遇到如题所述的乱码问题,然后度娘了好多,终于解决了.废话不多说,直接上代码. 首先是登录页面login.jsp 1 <%-- 2 Created by IntelliJ IDEA. 3 User: PENG027 4 Date: 2016/11/11 5 Time: 15:48 6 To chang

Java发送POST请求,参数为JSON格式,并接收返回JSON数据

原文地址:https://blog.csdn.net/qq_26975307/article/details/82713725 /** * 发送post请求 * @param url 路径 * @param jsonObject 参数(json类型) * @param encoding 编码格式 * @return * @throws ParseException * @throws IOException */ public static String send(String url, JSO

非框架, 纯原生JS “商品详情跳转到商品列表,并记录高度“ 的写法思路

这里只讲思路,不提供代码. 写之前,我要先吐槽一种非常奇葩的写法.    下面是他的写法思路(虽不提倡,但可借鉴): 一个商品列表,然后把商品详情写在商品列表里. 这是一个页面,两个不一样的div标签,一个div标签是商品类表,另一个div标签是商品详情 从商品列表跳转到商品详情的操作是: 请求商品详情接口,请求到后赋值(在jq项目里特地引了个vue来双向绑定), 把当前页面的高度记录下来($document.scrollTop()获取高度), 然后把商品列表div标签隐藏掉,然后再显示商品详情

struts2+hibernate+spring+jquery返回json List列表

1.引入包:struts2-json-plugin-2.1.8.1.jar json-lib-2.1.jar commons-collections-3.2.1.jar commons-beanutils-1.8.2.jar commons-lang-2.4.jar ezmorph-1.0.6.jar,其他的包略,这几个包是返回json形式的数据必须的 2.<package name="default" extends="json-default"> 3

spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(value = { "/actor_details" }, method = { RequestMethod.POST }) @ResponseBody public ResultObject actorDetails(@RequestBody ActorDetailsRequest req)

Java Web返回JSON

Web项目中经常涉及到AJAX请求返回JSON和JSONP数据.JSON数据在server端和浏览器端传输,本质上就是传输字符串,只是这个字符串符合JSON语法格式.浏览器端会依照普通文本的格式接收JSON字符串.终于JSON字符串转成JSON对象通过JavaScript实现.眼下部分浏览器(IE9下面浏览器没有提供)和经常使用的JS库都提供了JSON序列化和反序列化的方法.如jQuery的AJAX请求能够指定返回的数据格式,包含text.json.jsonp.xml.html等. Webser