java - 如何将 ClientResponse 转换为 java 数组或 java 对象?
问题描述
我正在使用 jersey 调用不同的 Rest Api,并且我已经搜索了将响应转换为 java 数组或列出以下输出的解决方案:
[{"name":"TEST","number":22,"successNumber":11,"runnedNumber":20,"percentage":0.5},{"name":"SCENARIO","number":29,"successNumber":10,"runnedNumber":12,"percentage":0.34},{"name":"TESTCASE","number":11,"successNumber":6,"runnedNumber":9,"percentage":0.55}]
我试过resp.getEntity(String.class)
了,但这返回了一个字符串,我需要将它转换为 List 或 Array 或任何其他数据结构,以便我可以操作数据,因为我正在尝试制作图表。
这是我用来进行 API 调用的方法:
public ClientResponse callApi(String url) throws IOException {
String name = "admin";
String password = "admin";
String authString = name + ":" + password;
String authStringEnc = new BASE64Encoder().encode(authString.getBytes());
System.out.println("Base64 encoded auth string: " + authStringEnc);
Client restClient = Client.create();
WebResource webResource = restClient.resource(url);
ClientResponse resp = webResource.accept("application/json")
.header("Authorization", "Basic " + authStringEnc)
.get(ClientResponse.class);
if(resp.getStatus() != 200){
System.err.println("Unable to connect to the server");
}
String output = resp.getEntity(String.class);
System.out.println("response: "+output);
return resp;
}
解决方案
它可以通过以下代码片段来实现:
String response = response.getEntity().toString();
JSONArray jsonArray = (JSONArray) new JSONParser().parse(response);
String[] stringArray = jsonArray.toArray(new String[jsonArray.size()]);
推荐阅读
- php - 在服务器上找不到 Laravel 基表或视图
- c# - 当我使用 StoredProcedureEFCore Nuget 包时出现“Size 属性的大小为 0 addparam 无效”错误
- python - 如何在python中编写两个连续的“for循环”?
- typescript - 编写简单函数类型的冗余输入
- excel - 如何计算单列中空白单元格之间的平均值?
- javascript - 通过拆分字符串 javascript 将字符串转换为嵌套数组对象
- ios - Swift enum CLAuthorizationStatus 是 CLAuthorizationStatus 而不是其中一种情况
- string - Haskell中的Concat函数
- c++ - 错误“无效类型...用于数组下标”是什么意思?
- node.js - 如何获取包含特定字段的文档?