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;
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;
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); 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()); 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;
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); ObjectMapper objectMapper = new ObjectMapper(); String jsonString = objectMapper.writeValueAsString(link); System.out.println(jsonString); 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;
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); Gson gson = new Gson(); String jsonString = gson.toJson(link); System.out.println(jsonString); 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;
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); Object jsonString = JSON.toJSON(link); System.out.println(jsonString.toString()); Link link2 = JSON.parseObject(jsonString.toString(), Link.class); System.out.println(link2.toString()); } }
|
结果
几种方式的比较
类型 |
简介 |
传统Json方式 |
复杂的Json数据转换成实体类存在缺陷,性能和功能不够完善 |
Jackson方式 |
复杂的Json数据转换成实体类存在缺陷,性能和功能优于传统方式 |
Gson方式 |
功能方面在几种方式中最优,性能方面不如Jackson方式 |
FastJson方式 |
复杂的实体类转换成Json数据存在缺陷,解析json的速度优于其他方式 |
PS.
来源:Java解析JSON的四种方式_云恒子-CSDN博客_java解析json