RestTemplate获取json数组
1、需求描述
接口返回的是一个json数组,要获取到接口返回值并用实体类list接住。

2、解决方法
使用springboot框间自带的Http的工具类RestTemplate调接口,其返回值用hutool工具包中的Json转换工具类方法JSONUtil.parseArray转为Json数组既可(接口返回的数组只是形式上为json数组,但实际上还是字符串,可以理解为Json格式的字符串)
pom.xml引入Hutool的依赖
<!--引入Hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.5</version>
</dependency>
测试代码
@Test
public void testGetJiaYang() {
//SalaryHistoryInfoDTO salaryHistoryInfoDTO = new SalaryHistoryInfoDTO();
HttpHeaders requestHeaders = new HttpHeaders();
RestTemplate restTemplate = new RestTemplate();
String result;
String url = "http://localhost:10002/csm/customer/management/getPostData";
String token = "eyJhbG";
requestHeaders.add("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
//鉴权传token
requestHeaders.add("Authorization", token);
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("funcId", "10");
map.add("paras", "2022-06-30");
//这里的map为请求接口时需要传的参数
HttpEntity<Map> requestEntity = new HttpEntity<>(map, requestHeaders);
//获取接口响应返回信息
ResponseEntity<Map> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, Map.class);
JSONArray jsonArray = JSONUtil.parseArray(response.getBody().get("data"));
List<PostEntity> postEntityList = jsonArray.toList(PostEntity.class);
for (PostEntity postEntity : postEntityList) {
System.out.println(postEntity.toString());
}
}
3、注意的点

使用JSONUtil.parseArray()方法把String转换成json数组时要注意不要手残加一个toString()方法


虽然hutool.json包下的重载方法JSONUtil.parseArray()支持多种参数,既支持String,也支持Object。但不建议把参数转为String,因为会报一个错

报错原因是不符合数组的形式。
可以对比一下response.getBody().get("data")和response.getBody().get("data").toString()的值的区别。

很明显response.getBody().get("data")的值是一个数组,且size=10
而response.getBody().get("data").toString()就是一个字符串,根本就不是数组,所以就转为JSONArray就会报错!
4、总结
使用JSONUtil.parseArray时传入的参数不要加toString()。
5、疑问
JSONUtil.JSONArray parseArray(String jsonStr)支持传入参数为String的这个重载的方法有什么用?传了String进来,然后用JSONArray接就会报错??????????????????

源码中该方法的返回类型不就是JSONArray吗?希望有懂的大佬可以回答一下,不胜感激!!!
6、参考资料
RestTemplate获取json数组的更多相关文章
- js 获取json数组里面数组的长度
作为一个前端页面开发者第一次处理json数据,遇到了‘js 获取json数组里面数组的长度’?竟然不知道 json没有.length属性(真是要嘲讽下自己),少壮不努力老大徒伤悲啊!以前都是去寻求男朋 ...
- 转载: java获取json数组格式中的值
转自:https://www.cnblogs.com/kkxwze/p/11134846.html 第一种方法: String str = "{'array':[{'id':5,'nam ...
- java获取json数组格式中的值
第一种方法: String str = "{'array':[{'id':5,'name':'张三'},{'id':6,'name':'李四'}]}"; JSONArray jso ...
- 使用jquery循环并获取 json 数组的键/值对
var resultJSON = '{"FirstName":"John","LastName":"Doe"," ...
- java获取Json和http状态码
最近再做接口自动化测试,其中有几个方法比较重要 1.获取http状态码 /* * 返回接口状态码 * */ public static String getHttpCode(String url) { ...
- Android-解析JSON数据(JSON对象/JSON数组)
在上一篇博客中,Android-封装JSON数据(JSON对象/JSON数组),讲解到Android真实开发中更多的是去解析JSON数据(JSON对象/JSON数组) 封装JSON的数据是在服务器端进 ...
- 微信小程序踩坑日记4——真机端解析json数组和开发平台不一样
0. 引言 环境:访问服务器端php,获取json数组,并渲染在前台 问题描述:保证在开发平台上的正常运行,但是在真机端却出现了无法正确解析wx.request()返回的数据(特指无法解析res.da ...
- c# 使用Newtonsoft.Json解析JSON数组
一.获取JSon中某个项的值 要解析格式: [{"VBELN":"10","POSNR":"10","RET_ ...
- 获取某个元素第一次出现在数组(json数组)的索引
function firstIndex(arr, text) { // 若元素不存在在数组中返回-1 let firstVal = -1; for (let i = 0; i < arr.len ...
- PHP/Post 提交请求获取json数据,并转化为所需要的数组
/** * Post 提交请求获取json数据,并转化为所需要的数组 */ function request_post($url = '', $param = '') { if (empty($url ...
随机推荐
- P6189 [NOI Online #1 入门组] 跑步 (DP/根号分治)
(才了解到根号分治这样的妙方法......) 将每个数当成一种物品,最终要凑成n,这就是一个完全背包问题,复杂度O(n2),可以得80分(在考场上貌似足够了......) 1 #include < ...
- P3629 [APIO2010] 巡逻 (树的直径)
(这道题考察了求直径的两种方法......) 在原图中,每条边要经过两次,增加1条后,形成了一个环,那么环上的边只需要经过一次了(大量画图分析得),再增加一条又会形成一个环,如果这两个环有重叠,重叠部 ...
- Go_Channel详解
一 channel介绍 单纯地将函数并发执行是没有意义的.函数与函数间需要交换数据才能体现并发执行函数的意义. 虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问 ...
- Hive Beeline 命令行参数
[hadoop@hive ~]$ beeline --help[中文版] The Beeline CLI 支持以下命令行参数: Option Description --autoCommit=[tru ...
- CompareTest
一.说明:Java中的对象,正常情况下,只能进行比较:== 或 != .不能使用 > 或 < 的 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小. 如何实现? ...
- 驱动开发:内核枚举LoadImage映像回调
在笔者之前的文章<驱动开发:内核特征码搜索函数封装>中我们封装实现了特征码定位功能,本章将继续使用该功能,本次我们需要枚举内核LoadImage映像回调,在Win64环境下我们可以设置一个 ...
- java实现双向链表的增删改查
双向链表的增删改查 和单链表的操作很像:https://blog.csdn.net/weixin_43304253/article/details/119758276 基本结构 1.增加操作 1.链接 ...
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):MPG:一种有效的自我监督框架,用于学习药物分子的全局表示以进行药物发现
6.(2021.9.14)Briefings-MPG:一种有效的自我监督框架,用于学习药物分子的全局表示以进行药物发现 论文标题:An effective self-supervised framew ...
- C语言两个升序递增链表逆序合并为一个降序递减链表,并去除重复元素
#include"stdafx.h" #include<stdlib.h> #define LEN sizeof(struct student) struct stud ...
- 4.pytest结合allure-pytest插件生成allure测试报告
之前我们使用的测试报告插件是pytest-html 这次使用的插件是allure-pytest,更加美观强大 安装插件 pip3 install allure-pytest 安装allure(Mac) ...