Java中常用解析工具jackson及fastjson的使用
一、maven安裝jackson依賴
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
二、Jackson的使用
實(shí)體類轉(zhuǎn)化JSON
把實(shí)體類轉(zhuǎn)化為JSON格式數(shù)據(jù),返回給前端
創(chuàng)建 ObjectMapper obj = new ObjectMapper(); 對(duì)象,對(duì)象的 writeValueAsString 方法 會(huì)把一個(gè)實(shí)體類(必須有g(shù)et、set方法)轉(zhuǎn)化為JSON對(duì)象。
package com.lxc.springboot.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController // 這個(gè)類下邊的所有方法,都會(huì)返回json,不會(huì)返回一個(gè)視圖!
public class Json {
@RequestMapping(value = "/json")
public String json() throws Exception{
User user = new User("呂星辰", "888", 20);
ObjectMapper obj = new ObjectMapper();
String jsonObject = obj.writeValueAsString(user);
return jsonObject;
}
// 為測(cè)試方便,在這里寫(xiě)一個(gè)實(shí)體類
public static class User {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private String password;
private int age;
public User(String userName, String password, int age) {
this.userName = userName;
this.password = password;
this.age = age;
}
}
}
測(cè)試:

集合轉(zhuǎn)化JSON
前端結(jié)果是:一個(gè)數(shù)組,里邊是一個(gè)個(gè)對(duì)象
package com.lxc.springboot.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class Json {
@RequestMapping(value = "/json")
public String json() throws Exception{
// 創(chuàng)建一個(gè)集合
List<User> userList = new ArrayList<>();
for(int i = 0; i < 3; i ++) {
userList.add(new User("用戶名"+i, "密碼"+i, 20+i));
}
ObjectMapper obj = new ObjectMapper();
String jsonObject = obj.writeValueAsString(userList);
return jsonObject;
}
// 上邊有實(shí)體類,這里省略
}
測(cè)試:

Map轉(zhuǎn)化JSON
@RestController
public class Json {
@RequestMapping(value = "/json")
public String json() throws Exception{
// 創(chuàng)建一個(gè)Map
Map<String, Object> map = new HashMap<>();
map.put("name", "測(cè)試名");
map.put("age", 20);
ObjectMapper obj = new ObjectMapper();
String jsonObject = obj.writeValueAsString(map);
return jsonObject;
}
}
前端結(jié)果是:對(duì)象

new Date() 轉(zhuǎn)化JSON
@RestController
public class Json {
@RequestMapping(value = "/json")
public String json() throws Exception{
Date date = new Date();
ObjectMapper obj = new ObjectMapper();
String jsonObject = obj.writeValueAsString(date);
return jsonObject;
}
}
前端結(jié)果是:時(shí)間戳

當(dāng)然,也可以自定義時(shí)間格式
@RestController
public class Json {
@RequestMapping(value = "/json")
public String json() throws Exception{
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time = sdf.format(date); // "2021-06-27 05:19:33"
ObjectMapper obj = new ObjectMapper();
String jsonObject = obj.writeValueAsString(time);
return jsonObject;
}
}
封裝
package com.lxc.springboot.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.text.SimpleDateFormat;
public class JavaUtils {
/**
* 使用下邊方法需要導(dǎo)入依賴包:
* <dependency>
* <groupId>com.fasterxml.jackson.core</groupId>
* <artifactId>jackson-databind</artifactId>
* <version>2.12.3</version>
* </dependency>
*
* @param object 集合(List)、Map(HashMap)、對(duì)象(new Date)
* @param format 時(shí)間格式化 yyyy-MM-dd hh:mm:ss
* @return JSON格式化的字符串
*/
public static String getJson(Object object, String format) {
ObjectMapper objectMapper = new ObjectMapper();
// 不使用時(shí)間戳的方式
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
// 自定義時(shí)間格式
SimpleDateFormat sdf = new SimpleDateFormat(format);
// 設(shè)置時(shí)間格式化
objectMapper.setDateFormat(sdf);
try {
String jsonValue = objectMapper.writeValueAsString(object);
return jsonValue;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
public static String getJson(Object object) {
return getJson(object, "yyyy-MM-dd hh:mm:ss");
}
}
三、FastJson的使用
使用maven導(dǎo)入依賴包
<!--下邊依賴跟aop沒(méi)關(guān)系,只是項(xiàng)目中用到了 JSONObject,所以引入fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
常用方法:
(1)JSON.toJSONString(obejct) - java對(duì)象轉(zhuǎn)JSON字符串
(2)JSON.parseObject(string, User.class) - JSON字符串轉(zhuǎn)java對(duì)象
使用
@RestController
public class Json {
@RequestMapping(value = "/json")
public String json() throws Exception{
List<User> userList = new ArrayList<>();
userList.add(new User("1", "1", 20));
String res = JSON.toJSONString(userList);
return res;
}

到此這篇關(guān)于Java中常用解析工具jackson及fastjson的使用的文章就介紹到這了,更多相關(guān)jackson和fastjson的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring基礎(chǔ)系列之JavaConfig配置詳解
本篇文章主要介紹了spring基礎(chǔ)系列之JavaConfig配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
screw?Maven插件方式運(yùn)行時(shí)在編譯打包時(shí)跳過(guò)執(zhí)行的問(wèn)題解決方法
這篇文章主要介紹了screw?Maven插件方式運(yùn)行時(shí)在編譯打包時(shí)跳過(guò)執(zhí)行的問(wèn)題解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
IDEA工程運(yùn)行時(shí)總是報(bào)xx程序包不存在實(shí)際上包已導(dǎo)入(問(wèn)題分析及解決方案)
這篇文章主要介紹了IDEA工程運(yùn)行時(shí),總是報(bào)xx程序包不存在,實(shí)際上包已導(dǎo)入,本文給大家分享問(wèn)題分析及解決方案,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2020-08-08
Java基礎(chǔ)之淺談hashCode()和equals()
今天給大家?guī)?lái)的是關(guān)于Java基礎(chǔ)的相關(guān)知識(shí),文章圍繞著hashCode()和equals()展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Java面向?qū)ο蟪绦蛟O(shè)計(jì):繼承,多態(tài)用法實(shí)例分析
這篇文章主要介紹了Java面向?qū)ο蟪绦蛟O(shè)計(jì):繼承,多態(tài)用法,結(jié)合實(shí)例形式分析了java繼承與多態(tài)的相關(guān)概念、原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2020-04-04
Spring Boot 中application.yml與bootstrap.yml的區(qū)別
其實(shí)yml和properties文件是一樣的原理,且一個(gè)項(xiàng)目上要么yml或者properties,二選一的存在。這篇文章給大家介紹了Spring Boot 中application.yml與bootstrap.yml的區(qū)別,感興趣的朋友一起看看吧2018-04-04
Java實(shí)現(xiàn)并發(fā)執(zhí)行定時(shí)任務(wù)并手動(dòng)控制開(kāi)始結(jié)束
這篇文章主要介紹了Java實(shí)現(xiàn)并發(fā)執(zhí)行定時(shí)任務(wù)并手動(dòng)控制開(kāi)始結(jié)束,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Kotlin + Retrofit + RxJava簡(jiǎn)單封裝使用詳解
這篇文章主要介紹了Kotlin + Retrofit + RxJava簡(jiǎn)單封裝使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Java web實(shí)現(xiàn)動(dòng)態(tài)圖片驗(yàn)證碼的示例代碼
這篇文章主要介紹了Java web實(shí)現(xiàn)動(dòng)態(tài)圖片驗(yàn)證碼的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
SpringBoot+Jpa項(xiàng)目配置雙數(shù)據(jù)源的實(shí)現(xiàn)
本文主要介紹了SpringBoot+Jpa項(xiàng)目配置雙數(shù)據(jù)庫(kù)源的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12

