有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您可以尝试检查json输入是否包含“数据”:{“数据”:[,然后对其进行解析以相应地分离类

    但是。。。也许这不是最好的方法