json - 如何使用 Jersey 2.27 反序列化客户端站点上的 JSON 数组
问题描述
到目前为止,这是我的代码:
public ArrayList<Person> getGames() {
WebTarget target = webTarget.path("some/path");
Invocation.Builder invocationBuilder = target.request(MediaType.APPLICATION_JSON);
// add authentication cookie to get request
Response response = invocationBuilder.cookie(this.cookie).get();
int status = response.getStatus();
if (status == 200) { // everything ok
// response has wrong MediaType (text/plain from server side)
// this sets the right MediaType so Jackson (Json deserialization) will handle it
response.getHeaders().putSingle(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
// How do I do this?
ArrayList<Person> list = response.readEntity(???);
return list;
} else {
return new ArrayList<GameInfo>(); // FIXME: This may throw an exception
}
}
我知道如何反序列化单个 JSON 对象:
Person person = response.readEntity(Person.class);
这在内部完成(我认为是杰克逊)。
我的问题是,我得到了一个 JSON 格式:
[{"name":"name","age":"age","lives":{"street":"myStreet"}}, .... ]
我想以某种方式可以毫不费力地做到这一点,但我找不到任何不使用非常过时版本的泽西岛的例子。在文档中,我找不到有关数组反序列化的段落。
我感谢任何形式的帮助:)
解决方案
并回答我自己的问题:
https://www.reddit.com/r/javahelp/comments/7qkvjm/how_to_parse_json_array_with_2_or_more_different/
非常感谢 webdevnick22。
Person[] persons = response.readEntity(Person[].class);
就是你所要做的,一个简单但很难找到的答案。
推荐阅读
- php - 如何将会话值与php中的多个文件夹名称进行比较?
- marklogic - 注册查询在 MarkLogic 中是如何工作的?
- javascript - 在 for 循环上迭代 vis.js 图(yii2 框架)
- class - 使用自定义构造函数反序列化不可变类
- kubernetes - 谷歌云 Kubernetes 部署错误:字段不可变
- flutter - 如何实现一个 Flutter 搜索应用栏
- java - 如何从一个方法返回java中的两个值
- c# - 使用 System.Text.Json(.netcore-3.0) 而不是 Newtonsoft.Json 的扩展功能是什么?
- javascript - Atom 编辑器 - JS 的 TODO 高亮显示?
- cypress - 使用柏树从数据库中检索值