fastjson所需的依赖_Fastjson使用教程
介绍
Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
教程
maven依赖
com.alibaba
fastjson
1.2.12
API使用
涉及到User和Address两个类,分别如下:
User
class User{
private int id;
private String name;
private int age;
private List
addrList;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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List
getAddrList() {return addrList;
}
public void setAddrList(List
addrList) {this.addrList = addrList;
}
}
Address
class Address{
private String province;
private String city;
private String district;
private String detail;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district = district;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
}
1、序列化
主要通过 JSON.toJSONString方法将Bean转换为json。
String com.alibaba.fastjson.JSON.toJSONString(Object object)
User user = new User();
user.setId(1);
user.setName("ricky");
user.setAge(27);
List
addrList = new ArrayList<>();Address addr1 = new Address();
addr1.setProvince("北京");
addr1.setCity("北京市");
addr1.setDistrict("朝阳区");
addr1.setDetail("大望路金地中心");
addrList.add(addr1);
Address addr2 = new Address();
addr2.setProvince("湖北省");
addr2.setCity("武汉市");
addr2.setDistrict("武昌区");
addr2.setDetail("江汉路步行街");
addrList.add(addr2);
user.setAddrList(addrList);
System.out.println(user);
String jsonStr = JSON.toJSONString(user);
System.out.println(jsonStr);
结果如下:
{“addrList”:[{“city”:”北京市”,”detail”:”大望路金地中心”,”district”:”朝阳区”,”province”:”北京”},{“city”:”武汉市”,”detail”:”江汉路步行街”,”district”:”武昌区”,”province”:”湖北省”}],”age”:27,”id”:1,”name”:”ricky”}
2、反序列化
主要通过JSON.parSEObject方法将json转换为Bean对象,如下:
T com.alibaba.fastjson.JSON.parSEObject(String text,Class clazz)
String jsonStr = "...";
User user = JSON.parSEObject(jsonStr,User.class);
System.out.println(user);
3、JSONField 介绍
package com.alibaba.fastjson.annotation;
public @interface JSONField {
// 配置序列化和反序列化的顺序,1.1.42版本之后才支持
int ordinal() default 0;
// 指定字段的名称
String name() default "";
// 指定字段的格式,对日期格式有用
String format() default "";
// 是否序列化
boolean serialize() default true;
// 是否反序列化
boolean deserialize() default true;
}
3.1 指定序列化名称
指定User的addrList属性在序列化时变成addr_list,如下:
class User{
private int id;
private String name;
private int age;
@JSONField(name="addr_list")
private List
addrList;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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List
getAddrList() {return addrList;
}
public void setAddrList(List
addrList) {this.addrList = addrList;
}
}
结果:
{“addr_list”:[{“city”:”北京市”,”name”:”ricky”}
3.2 使用serialize/deserialize指定字段不序列化
控制age属性不序列化,如下:
class User{
private int id;
private String name;
@JSONField(serialize=false)
private int age;
@JSONField(name="addr_list")
private List
addrList;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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List
getAddrList() {return addrList;
}
public void setAddrList(List
addrList) {this.addrList = addrList;
}
}
结果:
{“addr_list”:[{“city”:”北京市”,”name”:”ricky”}
3.3 使用ordinal指定字段的顺序
class User{
@JSONField(ordinal = 1)
private int id;
@JSONField(ordinal = 2)
private String name;
@JSONField(ordinal = 3)
private int age;
@JSONField(name="addr_list",ordinal=4)
private List
addrList;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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List
getAddrList() {return addrList;
}
public void setAddrList(List
addrList) {this.addrList = addrList;
}
}
结果:
{“id”:1,”name”:”ricky”,”addr_list”:[{“city”:”北京市”,”province”:”湖北省”}]}
fastjson所需的依赖_Fastjson使用教程相关推荐
- Spring Data JPA教程:获取所需的依赖关系
在创建使用Spring Data JPA的应用程序之前,我们需要获取所需的依赖关系. 这篇博客文章标识了必需的组件,并描述了如何使用Maven获得它们. 让我们开始吧. 其他阅读:如果您不熟悉Spri ...
- guice依赖注入原理_Google Guice依赖注入示例教程
guice依赖注入原理 Google Guice is the framework to automate the dependency injection in applications. If y ...
- matchers依赖_Hamcrest Matchers教程
matchers依赖 本文是我们名为" 用Mockito测试 "的学院课程的一部分. 在本课程中,您将深入了解Mockito的魔力. 您将了解有关"模拟",&q ...
- Mac/Linux 安装联邦学习 Fate 框架单机部署所需的依赖(填坑大全)
安装过程各种坑,官方单机部署教程,然而官方教程问题超多,我在Mac本机与新建的ubuntu18.04.5上分别单机部署,使用standalone-fate-master-1.4.5.tar.gz,py ...
- maven asm 依赖配置_Maven教程_v20201119
Maven是什么?它的作用有哪些? Maven安装配置和目录结构详解 创建Maven项目(cmd命令) Maven生成站点和报告文档(cmd命令) 使用MyEclipse建立maven项目 使用MyE ...
- fastjson 序列化 不包括转义字符_fastjson黑盒测试与白盒审计
简介与漏洞史 java处理JSON数据有三个比较流行的类库,gson(google维护).jackson.以及今天的主角fastjson,fastjson是阿里巴巴一个开源的json相关的java l ...
- linux系统无网络状态下安装nginx及其所需的依赖包
转载自:https://blog.csdn.net/qq_29440353/article/details/90207486 https://www.cnblogs.com/xxoome/p/5866 ...
- centos及ubuntu安装 Puppeteer/rendertron所需的依赖包
安装谷歌的Puppeteer/rendertron时需要安装一些依赖包, 否则会报错, 整体如下: ubuntu: apt install gconf-service libasound2 libat ...
- maven snapshot依赖 打包_Maven教程2:Maven项目构建过程练习
点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化 ...
最新文章
- AOP配置开发入门案例
- linux下安装python dlib依赖
- 监督学习—最小二乘法
- window10使用 Hyper-V 创建ubuntu虚拟机并使用增强会话功能
- SQLSEVER 中的那些键和约束
- java学习(90):Character方法大小写转换
- Maven学习(三)————Maven核心概念(二)
- AMD桌面处理器Roadmap也已泄露
- 数据科学 IPython 笔记本 9.11 结构化数据:NumPy 的结构化数组
- 关于 iOS 中 new Date()的坑
- 方舟手游服务器设置文件翻译,方舟手游咋设置翻译
- BGP过滤器原理和实验(华为设备)
- RailsCasts中文版,#15 Fun with Find Conditions 使用hash为查询条件以便生成正确语法的SQL查询...
- CAD 卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件【转载】
- 微分方程模型_天生一对,硬核微分方程与深度学习的「联姻」之路
- 英语语法——名词和名词性从句
- ARM与RISC-V架构有哪些区别?
- matlab存取面shp
- 基于LM324四运放的复合信号发生器(17年电赛国赛题)
- 未来已来,看北京理工大学的智慧校园如何落地
热门文章
- 【hadoop】Hadoop 面试题总结
- Scala之偏函数Partial Function
- 云计算的产生,需要满足哪些条件?
- php 随机替换字符串_php替换固定字符串
- linux更换桌面系统,给Linux系统安装桌面环境
- OSI七层模型和各自功能
- 用计算机计划任务设置程序,教您使用系统的任务计划让程序每天自动定时运行...
- 《网络协议》HTTP 协议
- 推荐 10 个不错的网络监视工具,建议收藏!
- infinitescroll php,php – Strategery – InfiniteScroll不工作