Как настроить сложный тип с внутренним классом (содержащим тот же ключ JSON) в качестве POJO для целей сортировки с использованием Джексона?

Я использую Java 1.8 и FasterXML.

Предположим, у вас есть список массивов, состоящий из JSON Array:

[
    {
        "id": "8",
        "musician": {
            "band": {
                "bandId": "104"
            },
            "genre": {
                "type": "country",
                "typeId": 123
            },
            "musician": {
                "id": "87"
            }
        }
     },
     {
        "id": "9",
        "musician": {
            "band": {
                "bandId": "104"
            },
            "genre": {
                "type": "country",
                "typeId": 123
            },
            "musician": {
                "id": "88"
            }
        }
     }
]

public class Musician {

    private int id;
    private Band band;
    private Genre genre;

    // How to marshal this?
    private Musician musician;  

}

public class Band {

    private bandId;
}

public class Genre {

    private String type;
    private String typeId;
}

Как настроить класс верхнего уровня, если вам нужно маршалировать тот же тип (то есть Musician) внутри класса?

Есть ли аннотация для использования?

Должен ли я просто назвать внутренний класс Музыканта чем-то другим?


person PacificNW_Lover    schedule 12.06.2020    source источник


Ответы (1)


public class Musician {

    private int id;
    private Band band;
    private Genre genre;

    @JsonIgnoreProperties(["band", "genre"])
    private Musician musician;  

}

(Я также предлагаю переименовать свойство «музыкант» во что-то, что проясняет фактическую связь между внешним и внутренним свойствами.)

Источник: Двусторонняя ссылка на объект Джексона json

person Community    schedule 12.06.2020