阿里的fastjson使用总结

来源:互联网 发布:win10 预装软件 编辑:程序博客网 时间:2024/06/06 14:15

jackson是spring mvc内置的json转换工具,谷歌的Gson(idea安装的GsonFormat插件就是goole的,alt+s(可以格式化json,亦可将json生成实体类)) ,阿里的FastJSON(号称是最快的JSON转换)

以下介绍阿里的fastjson的常用API:

导包com.alibaba.fastjson.JSON

1.JSON.toJSON(object)最不常用的方法,因为它返回的是Object

2.JSON.toJSONString()最为常用,可以将vo,map,list转为json格式的字符串

  JSON.toJSONString(user)

  JSON.toJSONString(list)

  JSON.toJSONString(map)


3.反序列化:
  VO vo = JSON.parseObject("jsonString", VO.class);//反序列化前需要判断jsonString,为不为"[]",即一条记录没有,没有的话,就不要反序列化了,否则fastjson会因为没有记录反序列化失败而报错.

  HashMap<String,Object>  hashMap = JSON.parseObject(jsonString, HashMap.class);
  List<Person> list = JSON.parseArray(jsonString, Person.class);

JSON.parseArray的理解:

String jsonString = [{"name":"张三","age":"1"},{"name":"李四","age":"4"}], 通过JSON.parseArray(jsonString, Person.class);就可以将jsonString反序列化为包含多个person对象的list集合


4.fastjson过滤不要要序列化的变量,在不需要序列化的成员变量的get方法上加如下注解

@JSONField(serialize = false)


5.SpringMVC的@Responsebody注解将对象转为json,这里在成员变量的get方法加如下注解,可以改变转为json的名称

@JSONField(name = "SiteKey")   //原本返回的是小写s的siteKey,加此注解后,返回的就是大写S的SiteKey

private String getSiteKey() {

return siteKey;

}


6.成员变量的set方法上的@JSONField(name = "SiteKey")注解怎么理解:

Json.parseObject(jsonString)反序列化的过程是先看成员变量的set方法有没有@JsonField(name = "")的注解,没有的话,直接找成员变量(忽略首字母大小写,即首字母是大写,也可以匹配到小写的成员变量,序列化成功)
如果有该注解,则按该注解的name(不区分单次大小写,你全大写全小写都可以反序列化成功(前提是你成员变量有这个单词))在成员变量里匹配,没匹配上的属性,就不会反序列化到实体类里