一、Fastjson用法汇总
Fastjson是一款高性能的JSON解析器和生成器,它采用一种类似于Google Gson的JSON+反射的方式进行对象的序列化和反序列化,支持Java序列化和反序列化,可以将Java对象转化为JSON格式的字符串,也可以将JSON格式的字符串转化为Java对象。Fastjson不仅提供了简单的序列化和反序列化方法,还支持类型转换,泛型、对象交叉引用等高级特性。下面将从Fastjson最新版本、Fastjson怎么下载、Fastjson的使用、Fastjson是干嘛用的、Fastjson版本、Fastjson注解、Fastjson最新版、Fastjson注解有哪些等多个方面对Fastjson用法进行详细的阐述。
二、Fastjson最新版本
Fastjson最新版本是1.2.78,它可以在Maven仓库中进行下载。如果您采用的是Gradle构建工具,只需在项目的build.gradle文件中添加以下依赖即可:
dependencies { compile 'com.alibaba:fastjson:1.2.78' }
三、Fastjson怎么下载
除了在Maven仓库中下载Fastjson外,也可以在阿里巴巴官方网站上进行下载。具体步骤如下:
1、打开网址:https://github.com/alibaba/fastjson
2、选择一个你需要的版本,点击下载即可。
3、解压下载的文件,将fastjson的jar包添加到你的项目的classpath中即可开始使用。例如在Eclipse中添加jar包的方法:将fastjson的jar包拖拽到Eclipse中就行了。
四、Fastjson的使用
Fastjson的使用非常简单,只需在Java对象上添加注解,然后调用Fastjson提供的序列化和反序列化方法即可。例如:
public class User { @JSONField(name = "u_id") private long id; @JSONField(name = "u_name") private String name; @JSONField(name = "u_birth", format = "yyyy-MM-dd HH:mm:ss") private Date birth; // 省略get和set方法 }
上述代码是一个User类,其中使用了Fastjson的注解——@JSONField。这个注解用来指定JSON字符串中对应的字段名,以及Java对象属性和JSON字符串中的字段名不一致的情况。Fastjson还提供了其他注解,可以用来控制序列化和反序列化时的格式、类型等。例如@JSONType、@JSONCreator、@JSONField、@JSONType等注解,这些注解在后续章节中会详细解释。
接下来是一个将Java对象转化为JSON格式字符串的例子:
User user1 = new User(); user1.setId(1L); user1.setName("Tom"); user1.setBirth(new Date()); String jsonStr = JSON.toJSONString(user1); System.out.println(jsonStr); // 输出:{"u_birth":"2019-08-01 10:00:00","u_id":1,"u_name":"Tom"}
上述代码中,使用了Fastjson提供的toJSONString方法将Java对象user1转化为JSON字符串。
下面是一个将JSON格式字符串转化为Java对象的例子:
String jsonStr = "{\"u_id\":1,\"u_name\":\"Tom\",\"u_birth\":\"2019-08-01 10:00:00\"}"; User user2 = JSON.parseObject(jsonStr, User.class); System.out.println(user2.getName()); // 输出:Tom
上述代码中,使用了Fastjson提供的parseObject方法将JSON字符串jsonStr转化为Java对象user2。
五、Fastjson是干嘛用的
Fastjson主要用于Java程序和前端页面之间的数据交互。使用Fastjson,我们可以方便地将Java对象转化为JSON字符串,然后将JSON字符串发送给前端,前端可以对JSON字符串进行解析,然后将解析后的数据展现给用户。同时,前端也可以将数据封装成JSON字符串,然后通过Ajax等方式发送给后端,后端可以使用Fastjson将JSON字符串解析为Java对象,进行业务逻辑处理。
六、Fastjson版本
Fastjson的版本分为三个类型:RC版、稳定版和SNAPSHOT版。稳定版指的是经过多次测试和优化后的版本,所有的功能都已经实现,可以放心使用;RC版指的是已经被标记为即将发布的版本,预计在一个月左右发布;SNAPSHOT版是一个正在开发中的版本,可以用来测试Fastjson最新的功能。
七、Fastjson注解
在前面的章节中,已经提到过Fastjson的注解,这里几个常用的注解进行详细的解释:
1)@JSONField:用来指定Java对象属性和JSON字符串中字段名的对应关系,以及对于时间类型的格式化。例如:
public class User { @JSONField(name = "u_id") private long id; @JSONField(name = "u_name") private String name; @JSONField(name = "u_birth", format = "yyyy-MM-dd HH:mm:ss") private Date birth; // 省略get和set方法 }
2)@JSONType:主要用来指定类的序列化和反序列化时的特性,包括序列化或反序列化时只序列化或反序列化某些字段等。例如:
@JSONType(ignores = {"password", "address"}) public class User { private long id; private String name; private String password; private String address; // 省略get和set方法 }
上述代码中,使用了@JSONType注解指定了忽略password和address属性。
3)@JSONCreator:可以用来指定反序列化时使用的构造函数。例如:
public class User { private long id; private String name; @JSONCreator public User(@JSONField(name = "id") long id, @JSONField(name = "name") String name) { this.id = id; this.name = name; } // 省略get和set方法 }
上述代码中,使用了@JSONCreator注解指定了使用id和name参数创建User对象。
这只是Fastjson的部分注解,还有很多可以在具体使用中逐渐了解和掌握。
八、Fastjson最新版
Fastjson最新版本是1.2.78,它可以在Maven仓库中进行下载。如果您采用的是Gradle构建工具,只需在项目的build.gradle文件中添加以下依赖即可:
dependencies { compile 'com.alibaba:fastjson:1.2.78' }
除了Maven仓库之外,Fastjson全量jar包和源码包还可以在GitHub上下载。GitHub地址:https://github.com/alibaba/fastjson
九、Fastjson注解有哪些
Fastjson中的注解有很多,在此只列举部分常用注解,具体如下:
1)@JSONField:用于指定Java对象属性和JSON字符串中字段名的对应关系,以及对于时间类型的格式化。
2)@JSONType:用于指定类的序列化和反序列化时的特性,包括序列化或反序列化时只序列化或反序列化某些字段等。
3)@JSONCreator:用于指定反序列化时使用的构造函数。
4)@JSONPOJOBuilder:用于指定反序列化时使用的Builder类。
5)@JSONField(serialize = false/serializeUsing = Serializer.class/deserializeUsing = Deserializer.class):用于指定Java对象属性的序列化或反序列化时的特性。
6)@JSONField(name = "xxx", ordinal = 0, serialize = false):用于指定Java对象属性对应的JSON字符串中的字段名、顺序、序列化或反序列化时的特性。
7)@JSONType(creator = Creator.class, deserializer = EasyCreateDeserializer.class, serializer = SpecializeSerializer.class):用于指定类的序列化和反序列化时使用的 Creator、Deserializer和Serializer。