Fastjson第一个示例分享
下文笔者从一个fastjson示例,讲述fastjson的使用简介说明,如下所示
首先请创建一个maven项目,然后引入相应的坐标信息
Java对象转换为JSON 格式
定义一个实体类
首先请创建一个maven项目,然后引入相应的坐标信息
引入maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.1</version>
</dependency>
例:Java对象转换为JSON 格式
定义一个实体类
public class User {
@JSONField(name = "AGE")
private int age;
@JSONField(name = "FULL NAME")
private String fullName;
@JSONField(name = "DATE OF BIRTH")
private Date dateOfBirth;
public User(int age, String fullName, Date dateOfBirth) {
super();
this.age = age;
this.fullName= fullName;
this.dateOfBirth = dateOfBirth;
}
// 标准 getters & setters
}
测试代码:使用JSON.toJSONString即可输出json字符串
private list<User> listOfUsers = new ArrayList<User>(); @Before public void initData() { listOfUsers.add(new User(8, "java265.com", new Date())); listOfUsers.add(new User(18, "maoxiao", new Date())); } @Test public void testJsonConvert() { String jsonOutput= JSON.toJSONString(listOfUsers); } ----运行以上代码,将输出以下信息------ [ { "AGE":8, "DATE OF BIRTH":1658566486, "FULL NAME":"java265.com" }, { "AGE":18, "DATE OF BIRTH":1658566486, "FULL NAME":"maoxiao" } ]
使用JSONField字段属性设置输出格式
@JSONField(name="AGE", serialize=false)
private int age;
@JSONField(name="LAST NAME", ordinal = 2)
private String lastName;
@JSONField(name="FIRST NAME", ordinal = 1)
private String firstName;
@JSONField(name="DATE OF BIRTH", format="dd/MM/yyyy", ordinal = 3)
private Date dateOfBirth;
ordinal:指定json字段的顺序
formate:指定转入和转出的格式信息
[
{
"FIRST NAME":"mao",
"LAST NAME":"xiao",
"DATE OF BIRTH":"23/7/2022"
},
{
"FIRST NAME":"zhang",
"LAST NAME":"xiaoqin",
"DATE OF BIRTH":"23/7/2022"
}
]
@JSONField
@JSONField的功能
当属性私有时,需使用set方法,否则无法反序列化
JSONField 配置在方法上的示例
配置在 getter/setter 上
public class A {
private int id;
@JSONField(name="ID")
public int getId() {return id;}
@JSONField(name="ID")
public void setId(int value) {this.id = id;}
}
配置在 field 上
public class A {
@JSONField(name="ID")
private int id;
public int getId() {return id;}
public void setId(int value) {this.id = id;}
}
使用format配置日期格式化
public class A {
// 配置date序列化和反序列使用yyyyMMdd日期格式
@JSONField(format="yyyyMMdd")
public Date date;
}
使用 serialize/deserialize 指定字段不序列化
public class A {
@JSONField(serialize=false)
public Date date;
}
public class A {
@JSONField(deserialize=false)
public Date date;
}
使用 ordinal 指定字段的顺序
默认fastjson 序列化一个 java bean
根据fieldName的字母序进行序列化的
我们可使用ordinal指定字段的顺序
public static class VO {
@JSONField(ordinal = 3)
private int a0;
@JSONField(ordinal = 2)
private int a1;
@JSONField(ordinal = 1)
private int a2;
}
创建JSON 对象
我们可以使用fastjson创建json对象,具体的实现方法
我们只需使用JSONObject或JSONArray对象即可生成JSON对象
如:
JSONObject可将map生成为JSON对象
JSONArray可将List<Object>生成为一个JSONObject对象的集合
例
@Test
public void generationJSONObject() throws ParseException {
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < 2; i++) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("AGE", 10);
jsonObject.put("FULL NAME", "Doe " + i);
jsonObject.put("DATE OF BIRTH", "2016/12/12 12:12:12");
jsonArray.add(jsonObject);
}
String jsonOutput = jsonArray.toJSONString();
}
JSON字符串转换为Java对象
下文笔者将使用示例的方式讲述字符串转换为Java对象的方法爱分享
字符串转Java对象注意事项:
对象需有无参构造函数,否则会报异常
com.alibaba.fastjson.JSONException: default constructor not found.
例:
@Test
public void stringToObject() {
User User = new User(18, "mao", "er", new Date());
String jsonObject = JSON.toJSONString(User);
User newUser = JSON.parseObject(jsonObject, User.class);
assertEquals(newUser.getAge(), 0); // 如果我们设置系列化为 false
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


