【二三方】_FastJson的使用方法

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
    10
    UserDTO 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
    6
    String 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
    2
    String userselfstr = "{\"name\":\"锦朝\",\"detail\":\"努力开心过好每一天\",\"id\":21925155,\"age\":24}";
    JSONObject userselfObject = JSONObject.parseObject(userselfstr);
  • toJavaObject():将JSON对象转换成javaBean对象。

    1.注意进行转换时一定要使属性类型正确,比如此处会将"id":21925155会被转换成Integer类型,而UserDTO类中的id属性为Long类型,所以会报异常:

    1
    2
    3
    String 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
    3
    String 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
    5
    public UserDTO(String name, String detail, Integer age, Long id) {
    this.name = name;
    this.detail = detail;
    this.age = age;
    }
JSONPath
JSONPatch