大家都知道map和list是我们常用的数据结构
比如hashmap和arraylist
在实际开发中,有时会遇到一个问题,比如加了个需求,原来的数据库字段不够用,需要加字段,这样会导致很多处做修改,而我们如果灵活使用map和list就可以一个用字段以json的格式存放很多数据,但这种形式也有弊端,比如难以维护、难以拓展,所以一般情况下,能加字段,加表的话就先别用这种形式
但如果遇到不能动数据库的情况,就可以以这种方式(你甚至可以以这种方式把整个项目存放到一条数据里)😂废话不多说:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| package com.ruben;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.Map;
@RestController @RequestMapping("json") public class JsonTestController { @PostMapping public String jsonTest(@RequestBody Map<String, List<Map<String, Object>>> mapListMap) { List<Map<String, Object>> list = mapListMap.get("1234567"); list.forEach(map -> { String beforeUpdate = (String) map.get("zipName"); System.out.println(beforeUpdate); map.put("zipName", "修改后的名字"); System.out.println((String) map.get("zipName")); }); return "成功!"; } }
|
请求的数据格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| { "123456": [ { "videoId": "ads", "zipUrl": "adsdas", "zipName": "asdaw" } ], "1234567": [ { "videoId": "ads", "zipUrl": "adsdas", "zipName": "修改前的名字" }, { "videoId": "ads", "zipUrl": "adsdas", "zipName": "修改前的名字2" } ] }
|
输出结果
1 2 3 4
| 修改前的名字 修改后的名字 修改前的名字2 修改后的名字
|
如果要对单个执行具体修改,就可以在forEach里把它们放入另一个list<Map<String,Object>>里
感觉有点像套娃👶