本文主要记录如何实现 alibaba Json 与 对象 之间的互转操作,使用了 fastjson-1.2.39.jar 包实现:

1、pom 文件:

1
2
3
4
5
6
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.39</version>
</dependency>

2、实体类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import lombok.Data;

import java.util.Date;

@Data
public class Staff {

private String personName;
private String person_id;
private String personnation;
private Integer AGE;
private String sex;
private Integer telPhone;
private Date birthday;
}

3、启动类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import com.alibaba.fastjson.JSON;

public class ceshi {

/**
* json字符串 与 对象的互相转化
*/
@Test
public void jsonToBeanObject(){

// bean : personName, person_id, personnation, AGE, sex, telPhone, birthday(Date)
// json : personname, person_id, personNation, aGe, SEX, telPhone, birthday

// json字符串转化为对象
String jsonString = "{personname:'Antony','person_id':'371xxxxxxxxxxx','personNation':'汉族','aGe':'13','SEX':'male','telPhone':'88888','birthday': '2020-02-14 00:00:00'}";
Staff staff = JSON.parseObject(jsonString, Staff.class);
log.info(staff.toString());

// 对象转化为json字符串
String jsonStr = JSON.toJSONString(staff);
log.info(jsonStr);

// 对象转化为jsonObject
(JSONObject)JSON.toJSON(staff);
}

}

结果:

1
2
3
22:12:38.237 [main] INFO  com.example.test.ceshi - Staff(personName=Antony, person_id=371xxxxxxxxxxx, personnation=汉族, AGE=13, sex=male, telPhone=88888, birthday=Fri Feb 14 00:00:00 CST 2020)

22:12:38.341 [main] INFO com.example.test.ceshi - {"aGE":13,"birthday":1581609600000,"personName":"Antony","person_id":"371xxxxxxxxxxx","personnation":"汉族","sex":"male","telPhone":88888}

貌似,fastjson 的 json 转化为 bean 对象,匹配时会忽略大小写、支持驼峰式转换等,还是比较方便的。bean 对象转化为 json,bean 的 Date 类型在转化为 json 时,会变成 13 位时间戳。

如果不让 Date 类型变为 13 位时间戳的话,可以利用 @JSONField(name = “Time”, format = “yyyy-MM-dd’T’HH:mm:ssZ”) 的 format 来设置时间格式。