Fastjson2
因为工作中对json数据处理的情况较少,所有对此一直都是模模糊糊的,在格式的转换也一直不是很清楚,所以就称摸鱼时间学习下
这里使用的包是fastjson2
FastJson的使用
注解:@JSONField
在对象属性字段上使用,相当于是指定转换后输出的一些条件,我只测了常用的几个
Name:key的别名
Ordinal:排序,越小越前
Format:指定输出的格式
测试结果如下:
JSON.toJSONString(Object object) //java对象转换为JSON字符串(不是json对象哦)
List<JsonDemo> list=new ArrayList<>();
JsonDemo demo1 = new JsonDemo("小陈","蓝色",20, LocalDateTime.now());
JsonDemo demo2 = new JsonDemo("小花","粉色",18, LocalDateTime.now());
list.add(demo1);
list.add(demo2);
String string = JSON.toJSONString(list);
输出:
[{"颜色":"蓝色","姓名":"小陈","年龄":20,"时间":"2022-46-28"},{"颜色":"粉色","姓名":"小花","年龄":18,"时间":"2022-46-28"}]
下面就是每个api的使用了,格式之间的互相转换,我区分了一下,方便查阅
private static final String TEM="{\"颜色\":\"蓝色\",\"姓名\":\"小陈\",\"年龄\":20,\"时间\":\"2022-02-28\"}";
private static final String TEM2="{\"age\":20,\"color\":\"蓝色\",\"name\":\"小陈\",\"year\":\"2022-07-28T16:04:06.972\"}";
private static final String TEMLIST="[{\"age\":20,\"color\":\"蓝色\",\"name\":\"小陈\",\"year\":\"2022-07-28T16:15:46.07\"},{\"age\":18,\"color\":\"粉色\",\"name\":\"小花\",\"year\":\"2022-07-28T16:15:46.07\"}]";
转json
//1.java对象转换为JSON字符串格式(不是json对象哦)
JSON.toJSONString(Object object)
List<JsonDemo> list=new ArrayList<>();
JsonDemo demo1 = new JsonDemo("小陈","蓝色",20, LocalDateTime.now());
JsonDemo demo2 = new JsonDemo("小花","粉色",18, LocalDateTime.now());
list.add(demo1);
list.add(demo2);
String string = JSON.toJSONString(list);
输出:
[{"颜色":"蓝色","姓名":"小陈","年龄":20,"时间":"2022-46-28"},{"颜色":"粉色","姓名":"小花","年龄":18,"时间":"2022-46-28"}]
//2.将java对象转换为JSON对象
JSONObject jsonObject = (JSONObject)JSON.toJSON(Object object);
输出:
//3.将java对象集合转为JSONArray(JSONArray是JSON字符串的集合)
JSONArray array=(JSONArray)JSON.toJSON(Object object);
输出:
//4.JSON字符串转JSON对象
JSONObject jsonObject2 = JSON.parseObject(String text);
//5.JSON字符串转为JSONArray
JSONArray array1 = JSON.parseArray(TEMLIST)
转javabean对象
//1.JSON字符串转化为java对象(这里需要注意,就是如果使用了@JSONField取了别名后,所传的两个参数中的key要一致,要么都是别名,要么都是原始字段,不然解析不出来)
//JSON.parseObject(String text, Class<T> clazz);
JsonDemo demo = JSON.parseObject(TEM2, JsonDemo.class);
输出:
JsonDemo{name='小陈', color='蓝色', age=20, year=2022-07-28T16:04:06.972}
//2.Json字符串自定义转换对象
//JSON.parse(String text)
Map<String,Object> map=(Map)JSON.parse(TEM2);
输出:
List<Map<String,Object>> map=(List)JSON.parse(TEMLIST);
//3.JSON对象转java对象
//JSON.toJavaObject(Object object, Class<T> clazz)
JsonDemo demo3 = JSON.toJavaObject(jsonObject1, JsonDemo.class);
输出:
//4.JSON对象集合转java对象集合
List<JsonDemo> list2=new ArrayList<>();
JSONArray array=(JSONArray)JSON.toJSON(list);
array.forEach(json -> {
JsonDemo demo4 = JSON.toJavaObject(json, JsonDemo.class);
list2.add(demo4);
});
输出: