JSON属性数据变化剧烈时的Java反序列化
<强>手头任务:考虑JSON响应的以下模型,每个API响应将符合此响应,显然数据会变化。我们称之为ResponseModel:
{
"isErroneous": false,
"Message": "",
"Result": null,
"Data": {
"objId": 38,
"objName": "StackO",
"objDescription": "StackODesc",
"objOtherId": 0,
"objLocationId": 1
}
}
如何反序列化此响应,而不考虑数据中的数据:?数据可以包含不同类型的单个对象,例如狗、汽车。它还可以包含一系列汽车或狗,例如,不只是像上面那样的一辆
它也可能包含一辆汽车,汽车发动机obj,汽车驾驶员座椅obj
简言之,相同的响应总是会出现,但数据的值可能会有很大的差异,我想尽力将其反序列化为某种结果。对于所有可能的场景,我如何最好地实现这一点?设置类ResponseModel.class
对于除“数据”类型之外的任何事情都很容易
谢谢
下面是返回could
的另一个示例
{
"isErroneous": false,
"Message": "",
"Result": null,
"Data": [
{
"carId": 1,
"carName": "car#1",
"carDescription": "car#1",
"carOtherId": 1,
},
{
"carId": 2,
"carName": "car#2",
"carDescription": "car#2",
"carOtherId": 2,
},
{
"carId": 3,
"carName": "car#3",
"carDescription": "car#3",
"carOtherId": 3,
},
正如您在第二个示例中看到的,我们返回一个汽车列表,但在第一个响应中,我们只返回一个对象。我是不是太抽象了?我是否应该为每个API调用等设置自定义响应
我需要编写集成测试,断言反序列化对象与我每次期望的对象相等
# 1 楼答案
您可以尝试检查json输入是否包含“数据”:{或“数据”:[,然后对其进行解析以相应地分离类
但是。。。也许这不是最好的方法