如何在没有字段名称的情况下反序列化 JSON

how to deserealize JSON without field names

我调用了 returns 和 JSON 的 REST 服务,我正在尝试反序列化它(将其转换为实体),但问题是它没有字段名称比赛。 JSON 是这样的:

{
    "text1": "",
    "text2": null,
    "days": [
        {
            "20211217": {
                "07:00": {
                    "id": "1187067",
                    "cupo": 9
                },
                "08:00": {
                    "id": "1187068",
                    "cupo": 10
                }
            }
        },
        {
            "20211219": {
                "07:00": {
                    "id": "1187077",
                    "cupo": 10
                },
                "08:00": {
                    "id": "1187078",
                    "cupo": 10
                }
            
            }
        }
    ]
}

如您所见,它有一些字段,例如 text1、text2、days、id 和 cupo,问题是如何映射日期文本 (20211217,20211219) 和小时文本。我该如何操作这些数据?

您可以按如下方式对 JSON 进行建模:

import java.util.List;
import java.util.Map;

public class YourClass {
    private String text1;
    private String text2;
    private List<Map<String, Map<String, YourOtherClass>>> days;

    public YourClass(String text1, String text2, List<Map<String, Map<String, YourOtherClass>>> days) {
        this.text1 = text1;
        this.text2 = text2;
        this.days = days;
    }

    public String getText1() {
        return text1;
    }

    public void setText1(String text1) {
        this.text1 = text1;
    }

    public String getText2() {
        return text2;
    }

    public void setText2(String text2) {
        this.text2 = text2;
    }

    public List<Map<String, Map<String, YourOtherClass>>> getDays() {
        return days;
    }

    public void setDays(List<Map<String, Map<String, YourOtherClass>>> days) {
        this.days = days;
    }
}

然后另一个class对idcupo建模如下:

public class YourOtherClass {
    private String id;
    private int cupo;

    public YourOtherClass(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getCupo() {
        return cupo;
    }

    public void setCupo(int cupo) {
        this.cupo = cupo;
    }
}