Java适应前端JSON参数_万物皆可Map

来源于之前做过的ECharts引入饼图数据:

点我回顾ECharts

我们前端图表data中有两个参数:

  1. name 代表饼图每一部分的名称

  2. value 代表饼图每一部分的数据量(自动根据这个数据量更改比例)

因此我们前端需要复杂处理:name与value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//同步请求数据
$.ajax({
url: "${request.getContexPath()}/meal/showData",
type: "POST",
dataType: "JSON",
async: false,
// 回调函数
success: function (res){
data = res //这里具体看链接中 引入的饼图ECharts
},
error: function (error){
console.log(error)
}
})

data中是这样的:

1
data:[ { "name": "bookName", value: "20" }]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  @ResponseBody
  @RequestMapping("/showData")
  public List<Map<String,Object>> showData(
Model model,
HttpServletRequest request){
// 查询所有订单信息 List<OrderItem> list = orderItemService.list();

//map: productId(Integer类型) 次数(Integer类型) Map<Integer,Integer> map = new HashMap<>();

//遍历所有待处理的list //利用map的键值唯一性统计各(具体item对象)数量 list.forEach(i -> {
//如果存在对应的pid 作为键 那么就累加sum
//否则(第一次检索) 赋值为默认1 map.merge(i.getPid(), 1, Integer::sum); }); //查询商品名字返回结果集
//值用Object更加的灵活 List<Map<String,Object>> res = new ArrayList<>(); //map映射转换为 集合set Set<Map.Entry<Integer, Integer>> entries = map.entrySet();
//遍历这个集合 entries.forEach(entry -> { Map<String,Object> map1 = new HashMap<>();
//获取到集合中的每一个key值 Integer key = entry.getKey();
//根据这个key值(也就是pid) 去找对应的product对象 Product product = productService.get(key);
//将需要两个属性 put进去 //我们需要前端data的name:val value:value map1.put("name", product.getName()); map1.put("value", entry.getValue()); res.add(map1); }); return res; }