java - 如何提取 JsonArray 的第一个元素是 Integer 而另一个是 JsonElements?
问题描述
我在一个 Java Spring Boot 项目中,该项目使用 RestTemplates 发出 API 请求。尝试实现分页,使新的 JsonArray 传入的第一个元素是 Integer,其余的是 JsonElements。如果没有分页,传入的 json 值是:
[
{
"id":1234,
"name": null,
"...":...
},...
]
这些对象及其 getter 和 setter 正确实现。pd 我不需要传入 jsonelement 的所有属性。
public class WorkListBean extends WorkBean{
private List<WorkBean> lsWorkBean;
}
public class WorkBean implements Serializable {
private static final long serialVersionUID = -...L;
private long id;
private String name;
}
这会将 WorkListBean[] 返回给客户端并且运行良好。但是随着分页的实现,传入的 json 是这样的:
[
1,
{
"id":1234,
"name": null
},...
]
我怎样才能提取数组的第一个整数?
我想也许我可以使用带有 Object Mapper 的 Deserializer 来制作一个拥有 Integer 和 WorkBean 列表或数组的自定义对象。但我对这个条款有点迷茫。任何人都可以确认我指向一个好的观点吗?
提前致谢,
Grettings LaGallinaturuleta
解决方案
这是一个设计糟糕的架构。尽管在技术上是允许的,但将不同类型的元素放在同一个数组中会使每个客户都受苦。
如果您可以更改正在与之交谈的服务器端,他们应该使用更用户友好的模式,如下所示:
{
"pageNumber":0,
"size":5,
"totalPages":4,
"content":[
{"studentId":"1","name":"Bryan","gender":"Male","age":20},
{"studentId":"2","name":"Ben","gender":"Male","age":22},
{"studentId":"3","name":"Lisa","gender":"Female","age":24},
{"studentId":"4","name":"Sarah","gender":"Female","age":26},
{"studentId":"5","name":"Jay","gender":"Male","age":20}
],
}
如果没有,您确实需要一个自定义反序列化器。
推荐阅读
- ubuntu - 为什么无法连接到远程服务器上安装的 Jenkins?
- android - 当应用程序在颤动中被杀死/终止时,从后台事件启动应用程序
- python - 如何将队列和播放与 discord.py 音乐机器人结合起来?
- reactjs - 如何从反应中的不同组件更改模态状态
- tensorflow - 如何在 keras tensorflow 2.x 中与域适应一起进行迁移学习?
- java - 每周节省 1 美元,但每周金额增加 1 美元 [作业]
- r - 在 R 中的 gt 包的 tab_footnote 位置选择不同的行列组合
- go - 如何动态更改方法接收器
- common-lisp - 为什么可以在 KEYWORD 包中引用以前未定义的变量?
- python - 同一个 csv 文件的不同目录(一个在 Jupyternotebook 中创建,一个在桌面上创建)会产生不同的结果