首页 > 其他分享 >Springboot+FastJson实现解析第三方http接口json数据为实体类(时间格式化转换、字段包含中文)

Springboot+FastJson实现解析第三方http接口json数据为实体类(时间格式化转换、字段包含中文)

时间:2023-12-08 11:00:54浏览次数:46  
标签:FastJson 实体类 http data private 接口 import com

场景

若依前后端分离版手把手教你本地搭建环境并运行项目:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662

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

系统需要对接第三方http接口获取返回的数据,并将json数据解析为实体类进行后续的业务处理。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

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 {

    @Test
    public 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) {

        }
    }
}

运行单元测试,查看解析结果

 

标签:FastJson,实体类,http,data,private,接口,import,com
From: https://www.cnblogs.com/badaoliumangqizhi/p/17884695.html

相关文章

  • https://avoid.overfit.cn/post/548ad625830a4645beba60a37a2b59d6
    本文从数据科学家的角度来研究检索增强生成(retrieve-augmentedGeneration,RAG)管道。讨论潜在的“超参数”,这些参数都可以通过实验来提高RAG管道的性能。与本文还将介绍可以应用的不同策略,这些策略虽然不是超参数,但对性能也会产生很大的影响。本文将介绍以下索引阶段的“超......
  • HTTPS 请求中的证书验证详解(Python版)
    在网络通信中,HTTPS是一种通过SSL/TLS加密的安全HTTP通信协议。证书在HTTPS中扮演着至关重要的角色,用于验证服务器身份并加密数据传输。本文将深入探讨Python中HTTPS请求中的证书相关内容,并提供详细的代码示例。1.证书的基本概念SSL/TLS证书是一种由证书颁发机构签发的......
  • 软件测试/人工智能|HTTPS加密协议,你会多少?
    什么是HTTPS?HTTPS是超文本传输协议(HTTP)的安全版本。它通过使用安全套接层协议(SSL)或传输层安全协议(TLS)来加密通信内容,确保数据在客户端和服务器之间传输时得到保护。这种加密机制防止了黑客或恶意用户窃取、篡改或窥视传输的数据。本文将详细介绍HTTPS的加密过程及其工作原理。HTT......
  • Socks VS HTTP 谁才是最快的代理协议
    前言在网络传输中,代理协议扮演着非常重要的角色。Socks协议和HTTP协议是两种常见的代理协议,在网络上使用非常广泛。这两个协议各有优缺点,但是常有人关心这两个协议的速度究竟如何,哪一个更快。在本文中,我们将对Socks和HTTP两个代理协议进行分析比较,并最终得出哪一个更快的结论。一......
  • CentOS系统下配置HTTP服务器的步骤
    在CentOS系统下配置HTTP服务器涉及到一系列的步骤。以下是一个基本的步骤概述,帮助你了解如何为CentOS系统配置HTTP服务器。1. 安装HTTP服务器软件:首先,你需要在CentOS系统上安装HTTP服务器软件。常见的选择是ApacheHTTP服务器。你可以使用以下命令来安装Apache:sql复制代码sudoyum......
  • CentOS上的HTTPS:如何设置安全的HTTPS连接
    在CentOS系统上设置安全的HTTPS连接是保护你的网站和用户数据的关键步骤。通过使用HTTPS,你可以加密与用户的通信,并确保数据在传输过程中的安全性。以下是设置安全的HTTPS连接的步骤概述:1. 获取SSL证书:首先,你需要获取一个有效的SSL证书,以验证你的网站身份并加密与用户的通信。你可......
  • IIS 漏洞Http.sys 远程代码执行
     漏洞描述弱点描述:在微软4月14日补丁日发布的补丁中,有一个针对IIS服务器的远程代码执行漏洞危害非常大,安恒信息提醒广大用户注意。漏洞信息远程执行代码漏洞存在于HTTP协议堆栈(HTTP.sys)中,当HTTP.sys未正确分析经特殊设计的HTTP请求时会导致此漏洞。成......
  • fastjson反序列化
    前言fastjson是阿里巴巴旗下的一个Java库,用于Java对象和JSON字符串之间的转换。这个库从2017-2022年,陆陆续续爆出了20多个反序列化RCE。官方采用黑名单的方式修复漏洞,这导致出现一系列的bypass==序列化分析packagePojo;importjava.util.Properties;publicclassUser......
  • skywalking 部署安装 https://blog.csdn.net/swg321321/article/details/129704345
    https://blog.csdn.net/swg321321/article/details/129704345 前言在分布式系统中会出现服务间的相互调用,且服务数量众多。一般会出现如下异常请求出现异常,需要定位定位具体是哪个服务器发生异常,需要对这个请求链路一步一步调试才能确定那个服务出现异常。出现定位异常服务难......
  • Web开发学习HTTP协议、通过浏览器控制台学习HTTP协议。
    @目录HTTP协议1.HTTP协议是什么?2.HTTP协议的特点3.什么是URL?4.通过浏览器控制台学习HTTP协议RequestHeaders请求数据格式说明ResponseHeaders请求数据格式说明5.HTTP工作原理HTTP协议1.HTTP协议是什么?HTTP协议是一种超文本传输协议,规定了浏览器和服务器之间的数据传输的规则......