今天接手了一个新的服务,接手之后的第一件事就是撸代码,不知道哪个大佬留下了这么一行神秘的代码:
Map<String,List<PatDiagnosisDTO>> patAdditionalInfoNewMap = JSON.parseObject(JSON.toJSONString(patAdditionalInfoNew), Map.class);
说明:patAdditionalInfoNew是一个对象,map的value里面的List是包含在这个对象里面的,我比较好奇的是这样写的话这个map输出的是个什么东西(这些大佬整天写一些别人看不懂的东西):
废话少说,直接写个demo试一下!!!
@Data
public class Person<T> {
private String name;
private boolean isAlive;
private List<Card> cardList;
public static void main(String[] args) {
List<Card> cardList=new ArrayList<>();
Card cardOne=new Card();
Card cardTwo=new Card();
cardOne.setName("卡一");
cardOne.setCardNumber("1111");
cardList.add(cardOne);
cardTwo.setName("卡二");
cardTwo.setCardNumber("2222");
cardList.add(cardTwo);
Person person=new Person();
//boolean不赋值map中会默认value为false
//string类型的不赋值的话map中不显示
person.setName("测试");
person.setCardList(cardList);
Map<String, List<Card>> cardMap= JSON.parseObject(JSON.toJSONString(person),Map.class);
Set<String> strings = cardMap.keySet();
System.out.println("------------");
}
}
输出结果如上图,好家伙,key竟然是字段名,还能这么搞,不过有的场景还可能挺有用处,比如两个map取并集的时候用这个玩意能省不少事,下面是json的源码