Link实体类

已省略setter和getter方法

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
28
29
30
31
32
33
34
35
36
37
38
package com.ledao.entity;

/**
* 友情链接实体
*
* @author LeDao
* @company
* @create 2021-02-03 17:54
*/
public class Link {

/**
* 编号
*/
private Integer id;
/**
* 名称
*/
private String name;
/**
* 链接地址
*/
private String url;
/**
* 排列序号
*/
private Integer sortNum;

@Override
public String toString() {
return "Link{" +
"id=" + id +
", name='" + name + '\'' +
", url='" + url + '\'' +
", sortNum=" + sortNum +
'}';
}
}

利用传统方式

pom.xml代码:

1
2
3
4
5
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>

Java代码:

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
28
29
30
31
32
33
34
package com.ledao;

import com.ledao.entity.Link;
import org.json.JSONObject;

/**
* @author LeDao
* @company
* @create 2021-06-07 7:25
*/
public class Test {

public static void main(String[] args) {
Link link = new Link();
link.setId(1);
link.setName("LeDao的博客");
link.setUrl("http://www.zoutl.cn");
link.setSortNum(1);
//实体类转Json
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", link.getId());
jsonObject.put("name", link.getName());
jsonObject.put("url", link.getUrl());
jsonObject.put("sortNum", link.getSortNum());
System.out.println(jsonObject.toString());
//Json转实体类
Link link2 = new Link();
link2.setId((Integer) jsonObject.get("id"));
link2.setName((String) jsonObject.get("name"));
link2.setUrl((String) jsonObject.get("url"));
link2.setSortNum((Integer) jsonObject.get("sortNum"));
System.out.println(link2.toString());
}
}

利用Jackson方式

pom.xml代码:

1
2
3
4
5
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.3</version>
</dependency>

Java代码:

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
28
package com.ledao;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ledao.entity.Link;

/**
* @author LeDao
* @company
* @create 2021-06-07 7:25
*/
public class Test {

public static void main(String[] args) throws JsonProcessingException {
Link link = new Link();
link.setId(1);
link.setName("LeDao的博客");
link.setUrl("http://www.zoutl.cn");
link.setSortNum(1);
//实体类转Json
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(link);
System.out.println(jsonString);
//Json转实体类
Link link2 = objectMapper.readValue(jsonString,Link.class);
System.out.println(link2.toString());
}
}

利用GSON方式

pom.xml代码:

1
2
3
4
5
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>

Java代码:

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
28
package com.ledao;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.gson.Gson;
import com.ledao.entity.Link;

/**
* @author LeDao
* @company
* @create 2021-06-07 7:25
*/
public class Test {

public static void main(String[] args) throws JsonProcessingException {
Link link = new Link();
link.setId(1);
link.setName("LeDao的博客");
link.setUrl("http://www.zoutl.cn");
link.setSortNum(1);
//实体类转Json
Gson gson = new Gson();
String jsonString = gson.toJson(link);
System.out.println(jsonString);
//Json转实体类
Link link2 = gson.fromJson(jsonString, Link.class);
System.out.println(link2.toString());
}
}

利用FastJSON方式

pom.xml代码:

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>

Java代码:

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
package com.ledao;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.ledao.entity.Link;

/**
* @author LeDao
* @company
* @create 2021-06-07 7:25
*/
public class Test {

public static void main(String[] args) throws JsonProcessingException {
Link link = new Link();
link.setId(1);
link.setName("LeDao的博客");
link.setUrl("http://www.zoutl.cn");
link.setSortNum(1);
//实体类转Json
Object jsonString = JSON.toJSON(link);
System.out.println(jsonString.toString());
//Json转实体类
Link link2 = JSON.parseObject(jsonString.toString(), Link.class);
System.out.println(link2.toString());
}
}

结果

img

几种方式的比较

类型 简介
传统Json方式 复杂的Json数据转换成实体类存在缺陷,性能和功能不够完善
Jackson方式 复杂的Json数据转换成实体类存在缺陷,性能和功能优于传统方式
Gson方式 功能方面在几种方式中最优,性能方面不如Jackson方式
FastJson方式 复杂的实体类转换成Json数据存在缺陷,解析json的速度优于其他方式

PS.

来源:Java解析JSON的四种方式_云恒子-CSDN博客_java解析json