java对象和json之间相互转换三种方式

一、JackSon

maven依赖:(springboot中只要导入了spring-boot-starter-web会传递依赖,可以直接使用)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.3</version>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.3</version>
</dependency>
 <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.3</version>
 </dependency>

示例:

Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code",0);
resultMap.put("message","请求成功");
resultMap.put("data",body);
resultMap.put("timestamp",System.currentTimeMillis());
ObjectMapper objectMapper = new ObjectMapper();
try {
  // 生成json
  final String s = objectMapper.writer().writeValueAsString(objectMapper);
  // 解析json
  final Object o = objectMapper.reader().readValue(s);
} catch (JsonProcessingException e) {
  e.printStackTrace();
}

二、GSon(谷歌)

maven依赖:

<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.2</version>
</dependency>

示例:

Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code",0);
resultMap.put("message","请求成功");
resultMap.put("data",body);
resultMap.put("timestamp",System.currentTimeMillis());
Gson gson = new Gson();
// 生成json
final String s = gson.toJson(resultMap);
// 解析json,并指定解析对象类型
final Map o = gson.fromJson(s, Map.class);

三、FastJson(阿里)

maven依赖:

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.51</version>
</dependency>

示例:

Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("code",0);
resultMap.put("message","请求成功");
resultMap.put("data",body);
resultMap.put("timestamp",System.currentTimeMillis());
// 生成json
final String s = JSON.toJSONString(resultMap);
// 解析json,并指定解析对象类型
final Object o = JSON.parseObject(s, Object.class);
上一篇:jackson对yaml序列化与反序列化


下一篇:Jackson 最新反序列化漏洞(CVE-2019-14361和CVE-2019-14439)