Springboot+FastJson實現解析第三方http接口json數據為實體類(時間格式化轉換、字段包含中文)

場景

若依前后端分離版手把手教你本地搭建環境并運行項目:

若依前后端分離版手把手教你本地搭建環境并運行項目_前后端分離項目本地運行-CSDN博客

在上面搭建SpringBoot項目的基礎上,并且在項目中引入fastjson、hutool、lombok等所需依賴后。

系統需要對接第三方http接口獲取返回的數據,并將json數據解析為實體類進行后續的業務處理。

注:

博客:
霸道流氓氣質_C#,架構之路,SpringBoot-CSDN博客

實現

1、使用接口mock工具模擬出一個http的接口,比如使用apifox

比如這里接口返回的數據為

{"code": "200","data": [{"id": "38","name": "成生認兩","time_cur": "1984-01-29 17:55:39","地址": "mollit"},{"id": "61","name": "質立紅幾算往值","time_cur": "2013-01-27 06:38:34","地址": "est enim"},{"id": "53","name": "辦單正決風放","time_cur": "2008-10-18 14:00:37","地址": "ex commodo nisi"},{"id": "54","name": "角件二心任眼","time_cur": "1978-11-14 10:13:04","地址": "nisi exercitation quis voluptate"}]
}

然后進行mock,效果為

2、這里發起http客戶端請求使用hutool的HttpUtil

上面的接口中故意加了一個字段為中文名“地址”,因為第三方系統返回接口數據如此,其它字段均與接口中返回字段對應即可。

然后接口中返回的時間字段為字符串,這里在新建實體類時使用

? @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")

注解即可將時間字符串解析成Date屬性字段。

3、新建接口數據響應DTO,用來接受接口響應并判斷code字段等

import com.alibaba.fastjson.JSONArray;
import lombok.Data;
import java.io.Serializable;@Data
public class UserResDTO implements Serializable {private static final long serialVersionUID = 1L;/*** 響應編碼*/private Integer code;/*** 數據*/private JSONArray data;
}

這里接口數據返回為data字段,所以新建JSONArray 類型接收。

然后需要將data字段中的數據解析成對象的list。

新建UserDTO用來解析需要的數據

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;@Data
public class UserDTO {private String id;private String name;@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")private Date time_cur;private String 地址;private String remark;
}

4、新建測試類

調用JSONArray的toJavaList方法將數據解析為java的list對象

?
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.test.dto.UserDTO;
import com.ruoyi.system.domain.test.dto.UserResDTO;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;@RunWith(SpringRunner.class)
@SpringBootTest(classes = RuoYiApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class FastJsonTest {@Testpublic void getUserData() {String body = "";try {body = HttpRequest.get("http://127.0.0.1:4523/m1/2858210-0-default/testFastJson").timeout(20000).execute().body();UserResDTO userResDTO = JSON.parseObject(body, UserResDTO.class);if (userResDTO.getCode() != null && 200!=userResDTO.getCode()) {//錯誤處理}else {JSONArray data = userResDTO.getData();if (StringUtils.isEmpty(data)) {return;}List<UserDTO> userDTOS = data.toJavaList(UserDTO.class);System.out.println(userDTOS.toString());}} catch (Exception e) {}}
}?

運行單元測試,查看解析結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208524.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208524.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208524.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

K8S學習指南(1)-docker的安裝

文章目錄 引言1. Windows 系統中安裝 Dockera. 確認系統要求b. 下載 Docker Desktopc. 安裝 Docker Desktopd. 配置 Docker Desktope. 驗證安裝 2. Ubuntu 系統中安裝 Dockera. 更新包列表b. 安裝依賴包c. 添加 Docker GPG 密鑰d. 添加 Docker APT 倉庫e. 安裝 Dockerf. 添加用…

unity 2d 入門 飛翔小鳥 小鳥跳躍 碰撞停止揮動翅膀動畫(十)

1、切換到動畫器 點擊make transition和exit關聯起來 2、設置參數 勾選掉Has Exit Time 3、腳本給動畫器傳參 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Fly : MonoBehaviour {//獲取小鳥&#xff08;剛體&#xff09;p…

linux常用命令-pip命令詳解(超詳細)

文章目錄 前言一、pip命令介紹1. pip命令簡介2. pip命令的基本語法3. 常用的pip命令選項4. 常用的pip命令參數 二、pip命令示例用法1. 安裝包2. 卸載包3. 列出已安裝的包4. 搜索包5. 升級包 總結 前言 pip 是 Python 的包管理器&#xff0c;用于安裝和管理 Python 包。它提供了…

JVM常見垃圾回收器

串行垃圾回收器 Serial和Serial Old串行垃圾回收器&#xff0c;是指使用單線程進行垃圾回收&#xff0c;堆內存較小&#xff0c;適合個人電腦 Serial作用于新生代&#xff0c;采用復制算法 Serial Old作用于老年代&#xff0c;采用標記-整理算法 垃圾回收時&#xff0c;只有…

Windows 系統,TortoiseSVN 無法修改 Log 信息解決方法

使用SVN提交版本信息時&#xff0c;注釋內容寫的不全。通過右鍵TortoiseSVN的Show log看到提交的的注釋&#xff0c;右鍵看到Edit log message的選項&#xff0c;然而提交后卻給出錯誤提示&#xff1a; Repository has not been enabled to accept revision propchanges; ask …

linux如何刪除大文件的第一行(sed)

可以用sed命令實現&#xff1a; 刪除文檔的第一行 1. sed -i 1d <file>刪除文檔的最后一行 1. sed -i $d <file>在文檔指定行中增加一行 # 示例如下&#xff1a; echo "1"; echo "2"; echo "4"; echo "5"; # 想要在echo…

【PHP】php發送郵箱驗證碼格式美化,樣式美化

效果展示&#xff1a; 格式美化前 格式美化后 代碼 大多數框架都自帶有封裝好的發送email方法&#xff0c;就不多贅述&#xff0c;主要寫格式&#xff1a; <? php// 驗證碼過期時間 $expire 120; // 發件人郵箱 $from_email xx163.com; // 收件人 $to_email to163.com…

硬件產品經理常用的ChatGPT通用提示詞模板

產品策略&#xff1a;請幫助我制定一個硬件產品的產品策略。 市場調研&#xff1a;如何進行硬件產品的市場調研&#xff1f; 用戶需求&#xff1a;如何確定硬件產品的用戶需求&#xff1f; 產品設計&#xff1a;如何設計一個優秀的硬件產品&#xff1f; 用戶體驗&#xff1…

數據分析基礎之《matplotlib(5)—直方圖》

一、直方圖介紹 1、什么是直方圖 直方圖&#xff0c;形狀類似柱狀圖卻有著與柱狀圖完全不同的含義。直方圖牽涉統計學的概念&#xff0c;首先要對數據進行分組&#xff0c;然后統計每個分組內數據元的數量。在坐標系中&#xff0c;橫軸標出每個組的端點&#xff0c;縱軸表示頻…

無人機巡山護林,林業無人機智能助力綠色守護

隨著全球環保意識的不斷提高&#xff0c;無人機巡山護林已經成為解決森林巡檢難題的一種獨特而高效的方式。在我國&#xff0c;各地正積極探索無人機在森林防火、病蟲害監測以及生態調查等領域的創新應用。隨著無人機技術的不斷演進&#xff0c;其在推動森林保護和可持續發展方…

HTML實現每天單詞積累

注冊頁面 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>注冊</title><style>body {font-family: Arial, sans-serif;background-color: #f5f5f5;}form {max-width: 500px;margin: 50px auto;padding: 40px…

【Docker】進階之路:(九)Docker網絡

【Docker】從零開始&#xff1a;19.Docker網絡 Docker網絡模式簡介bridge網絡模式host網絡模式none網絡模式container網絡模式user-defined網絡模式1.創建自定義的bridge網絡2.使用自定義網絡 高級網絡配置docker network命令 為什么要了解容器的網絡模式? 首先&#xff0c;容…

spark 寫入 mysql 報錯

報錯信息如下&#xff1a; "C:\Program Files\Java\jdk1.8.0_291\bin\java.exe" "-javaagent:D:\Hadoopruanjian\IDEA\IntelliJ IDEA 2021.3.2\lib\idea_rt.jar60971:D:\Hadoopruanjian\IDEA\IntelliJ IDEA 2021.3.2\bin" -Dfile.encodingUTF-8 -classpat…

工業級路由器在風力發電場的遠程監控技術

工業級路由器在風力發電場的遠程監控技術方面具有重要的應用意義。風力發電場通常由分布在廣闊地區的風力發電機組組成&#xff0c;需要進行實時監測、數據采集和遠程管理。工業級路由器作為網絡通信設備&#xff0c;能夠提供穩定可靠的網絡連接和多種遠程管理功能&#xff0c;…

深入探討Go語言協程調度:GRM模型解析與優化策略

一、線程調度 1、早期單線程操作系統 一切的軟件都是跑在操作系統上&#xff0c;真正用來干活&#xff08;計算&#xff09;的是 CPU早期的操作系統每個程序就是一個進程&#xff0c;直到一個程序運行完&#xff0c;才能進行下一個進程&#xff0c;就是“單進程時代”一切的程…

ES6中新增的基本數據類型----symbol

前言 Symbol 基本數據類型 獨一無二得值 Symbol函數創建 接收字符串 對symbol值得描述 let s1 Symbol(描述) /*** symbol 基本數據類型 表示獨一無二的值 Symbol函數創建獨一無二得值 參數可以是唯一值得描述*/ let sy1 Symbol();//創建好一個獨一無二得值 let sy2 Symbo…

EXP-00056: 遇到 ORACLE 錯誤 12154 ORA-12154: TNS: 無法解析指定的連接標識符

exp oas/oasoas filed:\daochu.dmp owner(s) 導出特定用戶 //exp 用戶名/密碼數據庫 filed:\daochu.dmp owner(用戶名) 1.重啟oracle監聽 cmd 中輸入 services.msc 找到服務&#xff1a;OracleOraDb10g_home1TNSListener 與 OracleServiceORCL。 把兩個服務啟動. 若未解決…

Vue 3 + Tailwind CSS:打造現代化項目的完美組合

Vue 3 Tailwind CSS&#xff1a;打造現代化項目的完美組合 本篇教程將向你介紹如何將 Tailwind CSS 與 Vue 3 項目搭配使用&#xff0c;為你的項目提供現代化的 UI 呈現和開發體驗。通過本文的逐步演示和示例代碼&#xff0c;你將很快掌握在 Vue 3 中集成和使用 Tailwind CSS…

SCI一區級 | Matlab實現GWO-CNN-BiLSTM-selfAttention多變量多步時間序列預測

SCI一區級 | Matlab實現GWO-CNN-BiLSTM-selfAttention多變量多步時間序列預測 目錄 SCI一區級 | Matlab實現GWO-CNN-BiLSTM-selfAttention多變量多步時間序列預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 1.Matlab實現GWO-CNN-BiLSTM-selfAttention灰狼算法優化卷…

IntelliJ idea卡頓解決,我遇到的比較管用的方案

Setttings> Build, Execution,Deployment>Debugger> Data Views> Java 取消 Enable "toString()" object view; Speed up debugging in IntelliJ Yesterday, I observed painfully slow debugging in IntelliJ. Every step over or step in took almost…