json字符串、JSNObject、JSONArray、jsonbean、list等相关的转换、过滤工具方法测试
创始人
2024-01-20 23:22:56
0

在这里插入图片描述

一、准备工作

引入pom

com.alibabafastjson1.2.78
org.projectlomboklombok1.18.22    

实体bean

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private Integer id;//姓名private String name;
}

二、工具类

1.json字符串转JSONObject

@Test
public void jsonStrConverJSONObject(){String str = "{\"id\":1,\"name\":\"tom\"}";JSONObject jsonObject = JSONObject.parseObject(str);System.out.println(jsonObject);     
}

输出:{“name”:“tom”,“id”:1}

2.json字符串转List

@Test
public void jsonStrConverList(){
String str = "[{\"id\":1,\"name\":\"tom\"},{\"id\":2,\"name\":\"cat\"}]";
List userList = JSONArray.parseArray(str, User.class);
System.out.println(userList);   
}

输出:[User(id=1, name=tom), User(id=2, name=cat)]

3.json字符串转JavaBean对象

@Test
public void jsonStrConverBean(){String str = "{\"id\":1,\"name\":\"tom\"}";User user = JSONObject.parseObject(str, User.class);System.out.println(user);   
}

输出:User(id=1, name=tom)

4.json对象转javabean

@Test
public void JSONObjectConverBean(){JSONObject jsonObject = new JSONObject();jsonObject.put("id", 1);jsonObject.put("name", "tom");User user = JSONObject.toJavaObject(jsonObject, User.class);System.out.println(user);   
}

输出:User(id=1, name=tom)

5.jsonObject转map

@Test
public void JSONObjectConverMap(){JSONObject jsonObject = new JSONObject();jsonObject.put("id", 1);jsonObject.put("name", "tom");Map map = JSONObject.parseObject(jsonObject.toJSONString(), Map.class);System.out.println(map);   
}

输出:{name=tom, id=1}

6.List转jsonArray

@Test
public void listConverjJsonArray(){List list = new ArrayList<>();list.add(new User(1, "a"));list.add(new User(2, "b"));//错误写法,因为list.toString()输出[User(id=1, name=a), User(id=2, name=b)]。这东西无法json解析,会报错:com.alibaba.fastjson.JSONException: syntax error, pos 2, line 1, column 3[User(id=1, name=a), User(id=2, name=b)]//        JSONArray jsonArray =JSONArray.parseArray(list.toString());//正确写法,简写方式JSONArray jsonArray =JSONArray.parseArray(JSONObject.toJSONString(list));//正确写法,复杂方式//        JSONArray jsonArray = new JSONArray();//        JSONObject jsonObject = null;//        for (User user: list) {//            jsonObject = new JSONObject();//            jsonObject.put("id", user.getId());//            jsonObject.put("name", user.getName());//            jsonArray.add(jsonObject);//        }System.out.println(jsonArray);
}

7.jsonArray转成String[]

@Test
public void jsonArrayConverStringArray(){JSONArray jsonArray = new JSONArray();jsonArray.add(0, "100");jsonArray.add(1, "101");jsonArray.add(2, "102");System.out.println("jsonArray:" + jsonArray);String[] stringArr = new String[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {stringArr[i] = jsonArray.get(i).toString();}for(String str : stringArr) {System.out.println(str);}
}

8.list根据ids数组过滤list

@Test
public void listFilter() {List list = new ArrayList<>();list.add(new User(1, "a"));list.add(new User(2, "b"));list.add(new User(3, "c"));list.add(new User(4, "d"));list.add(new User(5, "e"));list.add(new User(6, "f"));list.add(new User(7, "g"));list.add(new User(8, "h"));list.add(new User(9, "i"));list.add(new User(10, "j"));//注意:数组类型必须使用Integer才可以,使用int会判断失败Integer[] arr = new Integer[]{1,2,5,6,9};List filterList = list.stream().filter(item -> Arrays.asList(arr).contains(item.getId())).collect(Collectors.toList());filterList.stream().forEach(System.out::println);
}

问题:为啥使用int就判断失效,而使用Integer和String都能准确判断?

/*** 问题:为啥使用int就判断失效,而使用Integer和String都能准确判断?* 答案:不能将基本数据类型转化为List列表。
*/
@Test
public void test1() {int[] arr = new int[]{1,2,5,6,9};System.out.println(Arrays.asList(arr).contains(1)); //结果为falseInteger[] arr2 = new Integer[]{1,2,5,6,9};System.out.println(Arrays.asList(arr2).contains(1)); //结果为trueString[] arr3 = new String[]{"1","2","5","6","9"};System.out.println(Arrays.asList(arr3).contains("1")); //结果为true//验证答案如下,把arr、arr2、arr3分别返回查看返回泛型,能够看出Arrays.asList(arr)返回的居然是List,问题就出在这,说明list里面包含的是一个个的int[],用这个判断ints.contains(1),肯定为falseList ints = Arrays.asList(arr);List integers = Arrays.asList(arr2);List strings = Arrays.asList(arr3);
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...