一、导入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.32</version>
</dependency>
二、常用方法
1. Json 对象转 Java 对象
json
{
"field1": 123,
"field2": "xxx",
"field3": "xxx"
}
Dto.java
import lombok.Data;
@Data
public class Dto {
private int field1;
private String field2;
private String field3;
}
转换
try {
Dto dto = JSONObject.parseObject(jsonStr, Dto.class);
} catch (Exception e) {
// 转换出错
}
2. Json 数组转 Java List
json
[{
"field1": 1,
"field2": "xxx1",
"field3": "xxx1"
},
{
"field1": 2,
"field2": "xxx2",
"field3": "xxx2"
}]
Dto.java
import lombok.Data;
@Data
public class Dto {
private int field1;
private String field2;
private String field3;
}
转换
try {
List<Dto> dtoList = JSONObject.parseArray(jsonStr, Dto.class);
} catch (Exception e) {
// 转换出错
}
3、将一个实体类转成 json 对象
JSON.toJSON(dto)
4、将一个 dto list 复制到一个 vo list
List<Dto> dtoList = new ArrayList<>();
List<Vo> voList = JSON.parseArray(JSON.toJSONString(dtoList), Vo.class);
5、有序的 json 对象
JSON 数据本身是无序的,通常由字符串生成的 JSONObject 也是无序的。如果想 JSONObject 节点的顺序与字符串原本的顺序保持一致,可以借助 fastjson 很容易地实现。
- 将字符串 data 转换成有序的 JSONObject
JSONObject jsonObject = JSONObject.parseObject(data, JSONObject.class, Feature.OrderedField);
- 新建一个有顺序的 json 对象
JSONObject jsonObject = new JSONObject(true);