前语

在工作中,少不了Json解析处理,一般我们常用的就是FastJson、Jackson、Gson这三大东西类,他们都有各自的优缺点,本篇文章我们来运用一下他们各自的API,对比一下。

一、各个JSON技能的简介

1.1 FastJ宫颈癌疫苗son人物

fastjson是阿里巴巴的开源JSON解析库,它能够解析JSON格式的字符串,支撑将Java Bean序列化为JS开源代码网站githubON字符串,也能够从JSON字符串反序列化到JavaBean阿里巴巴网页版

Github官网简介:github.com/alibaba/fas…

1.2 Jackson人物

Jackson被称为“ Java JSON库”或“ Java的最佳JSON解析器”开源阅览。或简称为“ JSON for Java”。

Gith宫颈癌ub官网简介:github.com/FasterXML/j…

1宫颈癌.3 Gson人物

Gson是一个Java库,可用于将Java政策转换为其JSON标明方法。它也能够用于将JSON字符串转换为等效的Java政策。Gson可阿里巴巴1688货源批发官网以处理恣意Java政策,包含您没有源代码的预先存在的政策。

Github官网简介:github.com/google/gson

二、运用步骤

2.1 引入库

1、FastJs宫崎骏on依托

<!-- https://mgoogle空间vnrepository.com/arti开源节流fact/com.alibaba/fastjson -->
<dependency>
&阿里巴巴云客服lt;groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>

MavenGo中心仓库:mvnrepository.com/artifact/co…

2、Jackson依托

<!-- httpsgoogle翻译://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotatioGons -->
<dependency>
<groupId>com.fasterxml.jackson.core</grogoogleplay安卓版下载upId>
<artifactId>jackson-annotations</artifactId&gt教程诀窍2;
<version>2.12.1</version>
</dependency&g阿里巴巴网页版t;

Maven中心仓库:mvnrepository.com/artifact/co…

3、Gson依托

<!-- https://m阿里巴巴网页版vnrepository.com/artifact/com.google.阿里巴巴集团code.gson/gson -->
<dependency>
&lt阿里巴巴;groupId>com.google.code.gson</gro开源节流是什么意思是什么upId>
<artif枸杞actId>gson</artifactId>
<versiongoogle谷歌搜索主页>2.8.6&lgoogle空间t;/version>
</dependency>

Maven中心仓库:mvnrepository.com/artifact/co…

2.2 将JSON 字符串转换为Java 政策

Persogoogle谷歌搜索主页n政策

/**
* @au公积金thor DT开发者
*/
@Data
@阿里巴巴股票EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@NoArgsConstruc阿里巴巴网页版tor
public class Person implements Seri枸杞alizable {
private Integer id;宫颈癌
private String name;
private Datgoogle服务结构e createTime;
}

1、FastJson版别

 public static void main(String[] args) {
String j教程手绘son = "{"createTime":1621341922450,"id":1,"name":"DT"}";
// 方法1: 将json字符串转为Java政策
Person person = JSON.parseObject(json,Person.class);
System.out.println("java政策-教程网站>>&gtgoogle服务结构;"+person);
System.out.println("============================================google商铺=============");
// 方法2: 将json字符串转为Java政策
Person newP公积金erso开源节流n2 = JSONObject.GoogleparseObject(json, Person.class);
System.ou教程之家高清视频t.println("java政策->>>"+newPerson2);
}
JSON.parseObgoogle翻译j教程拼音ect(String,Object.class)
JSONObject.parseObject(St教程诀窍2ring, Object.class阿里巴巴)

一文吃透Json解析东西类合集(FastJson、Jackson、Gson)

2、宫颈癌疫苗Jackson版别

public stGoatic void main(Stringgoogle浏览器[] args) {
// 创建Jackson中心政策 Objectgoogle浏览器Mapper
Objec宫崎骏tMapper objectMapper = new ObjectMapper();
String json = "{"createTime":16阿里巴巴云客服21341922450,"id":1,"name龚俊":"DT"}";
try {
Person person = objectMapper.read开源节流是什么意思是什么Value(json, Person.class);
System.out.Goprintln("java政策->>>"+person);
} catch (JsonProcessingException e) {
e.printStackTrac阿里巴巴1688官网e();开源中国
}
}

一文吃透Json解析东西类合集(FastJson、Jackson、Gson)

3、Gson版别

public static void main(String[] args) {
// gson无法正常将时刻戳转化成da阿里巴巴集团te
// 运用JSON内存树注册Date类型
final Gson gson = new GsonBuilde教程诀窍2r()
.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
@Override
public Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationGoContext context) throws JsonParseException {
return new Date(jsonElement.getAsJsonPrimitive().getAsLong());
}
}).create();
String json = "{"createTime":162134开源操作系统1922450,"id":1,"name":"DT"}"开源是什么意思;
Person person = gson.fromJson(json, Person.class);
System.o阿里巴巴网页版ut.println("google浏览器java政策->>>"+person开源节流);
}

一文吃透Json解析东西类合集(FastJson、Jackson、Gson)

2.3 将Java政策转换为JSON 字符串

1、FastJson版别

public static void main(S教程诀窍2电影tring[] args) {Google
Per开源矿工son person = new Person(1,"DT",new Date());
// 方法1:将政策转为json字符串
String json = JSON.toJSONString(person);
System.Googleout.println("json字符串->>&开源节流gt;"+json);
System.out.教程高中println("========================================google地球=================");
// 方法2:将政策转为json字符串
String json2 = JSONObject.toJSONSgoogle翻译tring(persgoogle商铺on);
System.out.println("json宫颈癌疫苗字符教程诀窍2电影串->&枸杞gt;>"+json2);
}
JSONObject.toJSONString(String)
JSON.toJSONString(String)

一文吃透Json解析东西类合集(FastJson、Jackson、Gson)

2、枸杞Jackson版阿里巴巴网页版

public statgoogle服务结构ic void main(String[] args) {
// 创建Jackson核宫崎骏心政策 ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
Person person = new Person(1,"DT",new Date());
try {
String json = objectMapper.writeValueAsString(person);
Systegoogleplaym.out.println("json字符串->>>"+json);
} catch (JsonProcessingException e) {教程诀窍2
e.printStackTrace()googleplay;
}
}

一文吃透Json解析东西类合集(FastJson、Jackson、Gson)

3、Gson版别

public static void main(String[] args) {
Gson gson = new G教程诀窍2so教程诀窍2n();
Person person = new Person(1,"DT",new Date());
String json = gson.toJson(person);
Syste开源基金会m.out.println("json字符串->>>"+json);
}

一文吃透Json解析东西类合集(FastJson、Jackson、Gson)

2.4 将JSON 字符串数组转为JSON数组

1、Fa开源中国stJson版别

public static void main(Stringgoogle谷歌搜索主页[] args) {
List<P教程手绘erson> personList = new Arra阿里巴巴登录首页yList<>();
personList.add(new Person(1,"DT",new Date()))阿里巴巴1688货源批发官网;
pergoogleplay安卓版下载sgoogleplay安卓版下载onList.add(new教程诀窍2 Person(2,"DT1",new Date()));
personList.add(new Person(3,"DT阿里巴巴招聘2",new Date()阿里巴巴股票));
String json = JSONObject.toJSONString(personList);
JSONArray开源基金会 jsArr = JSONObject.parseArray(json);
System.out.println(jsArr);
}
JSONObject.parseArray(json)

一文吃透Json解析东西类合集(FastJson、Jackson、Gson)
遍历循环Json数组:

 public static void main(String[] args) {
List<Person&gt公积金; personList = new ArrayList<>();
personList.add(new教程英语 Person(1,"教程手绘DT",new Date()));
personList.add(newgoogle Person(2,"DT1",new Date()));
personList.add(newgoogle Person(3,"DT2",new Date()));
String json = JSONObject.toJSON枸杞String(perso教程诀窍2电影nL阿里巴巴1688ist);
JSONArrgoogleplay安卓版下载ay jsArr = JSONObject.parseArray(json);
// 遍历方法1
jsArr.stream().forEach(json1 ->{
System.out.println(json1.toString());
});
// 遍历方法2
for (Object o : jsArr) {
JSONObject obj = (JSONObje阿里巴巴网页版ct) o;
System.out.println("取到id->>>" + obj.get("idgoogle翻译"));
// 判别是否存在教程英语key
System.out.println("key是否存在->&gt阿里巴巴股票;>"+obj.containsKegoogley("name1"));教程诀窍2
// 判别是否存在值
System.out.println("value是否存在-工商银行>>阿里巴巴1688货源批发官网>"+obj.containsValue(obj.get("id")));
}
}

2阿里巴巴集团、Jackson版别

public static void main(String[] args) throws JsonProcessingException {
// 将JSON数组转换为array政策
ObjectMapper mapper = new ObjectMapper();
St教程的意思ring json = "[{"id":1,"name":"教程高中张三","createTime开源基金会":1622719597081阿里巴巴招聘}, {"id":2,"name":"李google服务结构四","createTime":1622719597081}]";
// 方法1
Person[] pp1 = mapper.readValue(json开源, Person[].classgoogle服务结构);
for (Person person : p阿里巴巴1688p1) {
S阿里巴巴ystem.out.println(person);
}
// 方法2
List<Person> ppl2 = Arrays.as宫崎骏List(mapper.readValue(json, Person[].class));
ppl开源软件2.stream().forEach(Sy开源基金会stem.out::println);
// 方法3
List<Person> pp3 = mapper.readValue(jso开源操作系统n阿里巴巴集团, new TypeReference<List<Person>>() {});
pp3.stream(教程的意思).forEach(System.out::println)阿里巴巴1688;
}

3、Gson版别

```java
public static void main(String[]公积金 args) {
// gson无法正常将时刻狗狗币戳转化成date
// 运用JSON内存树注册Date类型
final Gson gson = new宫崎骏 GsonBuilder()
.阿里巴巴registerTypeAdapter(Date.class, new JsonDeserializer<Date>开源矿工() {
@Override
public Date deseria枸杞lize(JsonElement json开源节流是什么意思是什么Element, Type type开源矿工, JsonDeserializationContext context) throws JsonParseException {
return new DaGooglete(jsonElement.宫颈癌getAsJsonPrimitive().教程手绘getAsLong());
}
}).create();
String json = "[{"id":1,"name":"张三","createT宫颈癌前期症状ime":1google服务结构622719597081}, {"id":2,"name":"李四"教程的意思,"createTime":1622719597081}]";
Type type = new TypeToken<ArrayList<Person>>(){}.getType();
List&lt阿里巴巴1688货源批发官网;Person> personList = gson.fromJson(json, type);
personList.stream().forEach(System.out::println);
}

Lisgoogle空间t反序列化时有必要供给它的Type,经过Gson供给的TypeToken.g开源中国etType()方法能够定义其时List的Type。

一文吃透Json解析东西类合集(FastJson、Jackson、Gson)

2.5 将JSON数组转为JSON 字符串

1、FastJson版别

pubGooglelic static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personLigoogle服务结构st.add(new Perso教程英语n(1,"DT",new Date()));
personList.add(new Person(2,"DT1",new Date()));教程网
personList.add(new Person(3,"DT2",new Date()));
String json = JSONObject.toJSONString(personList);
S狗狗币ystem.out.println("json->>>"+json);
}

2、Jackson版别

public static void main(String[] args) throws JsonPr阿里巴巴招聘oce开源软件ssi阿里巴巴ngException {
ObjectMapper objectMapper = new ObjectMapper开源操作系统();
List<Person> personList = new ArrayLisgoogleplay安卓版下载t<&gtGoogle;();
personList.add(new Person(1,"DT",new Date()));
personList.add(new Person(2,"DT1",new Date()));
personList.add(new Persogoogle地球n(3,"DT2",new Date()));
String json = object阿里巴巴Mapper.writeValueAsString(personList);
System.out.println("json->>>"+json);
}

3、Gson版别

public stat开源ic void main(String[] args) {
Gson gsgoogle服务结构on = new阿里巴巴招聘 Gson();
List<Person> personList = n阿里巴巴1688货源批发官网ew ArrayList<>();
personList.add(new Pe教程网站rson(1,"DT",negoogle翻译w Dat教程诀窍2电影e()));
perso阿里巴巴招聘nList.add(new Person开源(2,"DT1",new Date()));
personList.add(new Person(3,"DT2",new Date()));
Str教程网站ing json = gson.教程手绘toJson(personList);
System.out.println("json->>>"+json);
}

总结

以上就是今日的内容,能坚持看到这儿,你必定会有收成,我个人比较喜爱运用FastJson,推挤教程文档:www.runoob.com/w3cnote/fas…

技能群:176251012 喜爱是一种心境,坚持才是心境的表现开源是什么意思