安卓常用第三方框架-FastJson
来源:互联网 发布:seo h1标签用法 编辑:程序博客网 时间:2024/05/16 06:35
简介
上次我们讲到Google的Gson库,作为国际大公司的阿里巴巴也不敢示弱,出了一款号称速度最快的Fastjson,这里有第三方给出的测试结果https://github.com/eishay/jvm-serializers/wiki, 虽然FastJson在Github上戏称Gson的“G”是“龟速”的意思,但FastJson在文档方面确实做得不如Gson(没办法天朝软件行业的通病)。废话不多说下面先给地址。
下载地址
Maven:http://central.maven.org/maven2/com/alibaba/fastjson/
Sourceforge : https://sourceforge.net/projects/fastjson/files/
Github:
标准版https://github.com/alibaba/fastjson
安卓版https://github.com/alibaba/fastjson/tree/android
Gradle依赖
Fastjson提供了两种版本:标准版本,Android版本,所以添加Gradle依赖也有所不同
关于两个版本的区别可以查看阿里巴巴写的文档
#标准版compile 'com.alibaba:fastjson:1.2.24'#android版compile 'com.alibaba:fastjson:1.1.56.android'
FastJson使用
与Gson的fromJson,toJson类似FastJson也有如下方法
package com.alibaba.fastjson;public abstract class JSON { public static final String toJSONString(Object object); public static final <T> T parseObject(String text, Class<T> clazz, Feature... features);}
所以序列化的时候也是直接将对象作为toJsonString的参数
序列化
String jsonString = JSON.toJSONString(obj);
反序列化
Type obj = JSON.parseObject("...", Type.class);
泛型序列化
import com.alibaba.fastjson.TypeReference;List<Type> list = JSON.parseObject("...", new TypeReference<List<Type>>() {});
定制序列化的key
使用@JSONField注解能够定制JSON字符串生成的key,不仅如此还可以设置其中的serialize/deserialize来定制该字段是否序列化/反序列化
@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER })public @interface JSONField { int ordinal() default 0;//配置序列化的顺序,1.1.42版本之后才支持 String name() default "";//配置序列化的key String format() default "";//配置Date日期格式 boolean serialize() default true;//能否序列化 boolean deserialize() default true;//能否反序列化 SerializerFeature[] serialzeFeatures() default {};//设置序列化配置SerializerFeature是枚举类 Feature[] parseFeatures() default {};//设置反序列化配置Feature是枚举类}
可以说@JSONField 的一个注解融合了Gson的@Expose和@SerializedName两个注解的功能,
示例
JavaBean
public class Group { private int id; private String name; private List<UsersBean> users; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<UsersBean> getUsers() { return users; } public void setUsers(List<UsersBean> users) { this.users = users; } public static class UsersBean { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }}//序列化Group group = new Group();group.setId(0L);group.setName("admin");User guestUser = new User();guestUser.setId(2L);guestUser.setName("guest");User rootUser = new User();rootUser.setId(3L);rootUser.setName("root");group.addUser(guestUser);group.addUser(rootUser);String jsonString = JSON.toJSONString(group);System.out.println(jsonString);//输出结果//{"id":0,"name":"admin","users":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]}//反序列化Group group2 = JSON.parseObject(jsonString, Group.class);// ==>group2与group值相同
- 安卓常用第三方框架-FastJson
- 安卓常用的第三方框架
- 安卓常用第三方框架-Gson
- 安卓项目中常用的第三方框架推荐
- 安卓常用,比较有用的第三方框架
- 安卓第三方框架glide
- 安卓常用第三方工具
- 常用第三方框架
- 总结安卓开发中常用的七个第三方框架
- 总结安卓开发中常用的七个第三方框架
- 常用第三方框架。。AndBase
- IOS常用第三方框架
- IOS常用第三方框架
- ios常用第三方框架
- 工作常用第三方框架
- IOS常用第三方框架
- iOS常用第三方框架
- 工作常用第三方框架
- uC/OS-ii内核源码理解(五)创建任务函数
- Android 属性动画 PropertyValuesHolder与Keyframe
- PL/SQL经典练习
- 【GStreamer开发】GStreamer基础教程16——平台相关的element
- BZOJ 3196 Tyvj 1730 二逼平衡树
- 安卓常用第三方框架-FastJson
- POJ3617 Best Cow Line【水题】
- 机器学习实践系列之10 - OpenCV实战立体视觉
- 常用数据库连接串与驱动总结
- 大数据免费学习资源分享
- JAVA注解 annotation
- iOS一个类可以关联多个nib文件
- 对C++11条件变量的理解(逻辑)
- 【洛谷P3131】 【USACO16JAN】子共七