Джексон десериализует вложенный список в объект значения ключа - PullRequest
0 голосов
/ 03 сентября 2018

Мне нужно десериализовать / сериализовать объект json /, используя Джексона. Мне нужно десериализовать "UA": {"featureId": 2, "enabled": true} как список, где "UA" является свойством (именем) класса FeatureAccess, которое должно быть отображено как ключ объекта. Есть ли способ добиться этого с помощью Джексона? Также мне нужно было бы сериализовать его обратно в JSON, используя ту же структуру объекта. Я пытался написать собственный десериализатор, но его не вызывали.

У меня следующая структура класса.

public class FeatureUI implements Serializable {
    @JsonUnwrapped
    private Feature feature;
    private int count;
    // @JsonDeserialize(using = CustomDeserializer.class)
    private List<FeatureAccess> featuresAccess;
}

public class Feature implements Serializable {
    private int featureId;
    private String name;
    private Integer parentId;
}

public class FeatureAccess implements Serializable {
    private int featureId;
    private String name;
    private Boolean enabled;
}

Формат вывода / ввода

[
    {
        "featureId": 1,
        "parentId": null,
        "PU": {
                "featureId": 1
                "enabled": true
            }
    },
    {
        "featureId": 2,
        "parentId": null,
        "UA": {
                "featureId": 2,
                "enabled": true
            }
    },
    {
        "featureId": 8,
        "parentId": null,
        "OA": {
                "featureId": 8,
                "enabled": false
            },
        "PU": {
                "featureId": 8,
                "enabled": true
            },
        "UA": {
                "featureId": 8,
                "selected": true
            }
    }
]
...