FastJson的使用方法
FastJson中主要类
- JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。
- JSONObject:fastJson提供的JSON对象,
public class JSONObject extends JSON implements Map<String, Object>。也就是说,JSON有的属性和方法,JSONObject都有。其中数据以Map<String, Object>格式保存,也就是说JSONObject的数据结构与Map是一模一样的。 - JSONArray:fastJson提供的JSON对象,
public class JSONArray extends JSON implements List<Object>。也就是说,JSON有的属性和方法,JSONArray都有,而且其中数据以List<Object>格式保存。 - JSONPath:JSONPath表达式通常是用来路径检索或设置Json的,FastJson中虽然有这个类,但是有其他的包做得比它好。
- JSONPatch:JSONPatch是一种用于描述对JSON文档所做的更改的格式,FastJson中虽然有这个类,但是有其他的包做得比它好。
FastJson中的常用方法
toJSONString():将map或javaBean对象转换成JSON格式字符串。
1.将一个javaBean对象转成JSON格式字符串和一个map对象转成JSON字符串的效果是一模一样的:
1
2
3
4
5
6
7
8
9
10UserDTO userDTO = new UserDTO("锦朝","努力开心过好每一天",24,21925155L);
Map<String,Object> map = new HashMap<>();
map.put("name","锦朝");
map.put("detail","努力开心过好每一天");
map.put("age",24);
map.put("id",21925155L);
String userDTOstr = JSON.toJSONString(userDTO);
String mapstr = JSON.toJSONString(map);所得结果为:
1
2{"age":24,"detail":"努力开心过好每一天","id":21925155,"name":"锦朝"}
{"name":"锦朝","detail":"努力开心过好每一天","id":21925155,"age":24}2.JSON、JSONObject、JSONArray三个类中都有toJSONString()方法,作用效果完全相同:
1
2
3
4
5
6String userDTOstr = JSON.toJSONString(userDTO);
String mapstr = JSON.toJSONString(map);
String userDTOstr1 = JSONObject.toJSONString(userDTO);
String mapstr1 = JSONObject.toJSONString(map);
String userDTOstr2 = JSONArray.toJSONString(userDTO);
String mapstr2 = JSONArray.toJSONString(map);parseObject():将JSON格式字符串转换成JSON对象。
1.注意此处"id":21925155会被转换成Integer类型,写成"id":21925155L才会被转换成Long类型。
1
2String userselfstr = "{\"name\":\"锦朝\",\"detail\":\"努力开心过好每一天\",\"id\":21925155,\"age\":24}";
JSONObject userselfObject = JSONObject.parseObject(userselfstr);toJavaObject():将JSON对象转换成javaBean对象。
1.注意进行转换时一定要使属性类型正确,比如此处会将"id":21925155会被转换成Integer类型,而UserDTO类中的id属性为Long类型,所以会报异常:
1
2
3String userselfstr = "{\"name\":\"锦朝\",\"detail\":\"努力开心过好每一天\",\"id\":21925155,\"age\":24}";
JSONObject userselfObject = JSONObject.parseObject(userselfstr);
UserDTO userDTO1 = userselfObject.toJavaObject(UserDTO.class);字符串中改写为"id":21925155L可使JSON格式字符串转换成JSON对象时,id被转换为Long类型,这样在将JSON对象转换成javaBean对象时就不会报异常:
1
2
3String userselfstr = "{\"name\":\"锦朝\",\"detail\":\"努力开心过好每一天\",\"id\":21925155L,\"age\":24}";
JSONObject userselfObject = JSONObject.parseObject(userselfstr);
UserDTO userDTO1 = userselfObject.toJavaObject(UserDTO.class);2.将JSON对象转换成javaBean对象的本质是调用javaBean的默认构造方法,如果我们创建构造方法如下,则执行上述转换语句后,userDTO1对象中的id属性仍为null。
1
2
3
4
5public UserDTO(String name, String detail, Integer age, Long id) {
this.name = name;
this.detail = detail;
this.age = age;
}