Введение
Я вижу 2 проблемы и одну возможную последнюю проблему.
- Вам не хватает сеттеров / геттеров для десериализации для работы в JSON.
- Ваша полезная нагрузка, кажется, не работает для меня.
Как упоминалось в комментарии pcoates, вы также можете использовать @JsonAutoDetect(fieldVisibility = Visibility.ANY)
- но я не проверял это.
Наконец, также будьте осторожны с циклической ссылкой, если вы конвертируете обратно из java в JSON.Я вижу, что у Праздника есть набор подарочных наборов, но подарочный набор указывает на праздник.Если набор указывает на один и тот же родительский выходной, это циклическая ссылка, которая вылетает.
Получатели и установщики
Ваша проблема в том, что вам не хватает получателей и установщиков.Либо используйте lombok и добавьте аннотацию @data, либо добавьте геттер и сеттер.
@Data
public static class Holiday{
private String name;
private Set<GiftSet> giftSets;
}
@Data
public static class GiftSet {
private Integer id;
private Holiday holiday;
}
Полезная нагрузка
Я использовал следующую полезную нагрузку:
{
"name": "HolidaySet",
"giftSets": [
{
"id": 1111,
"holiday": {
"name": null,
"giftSets": null
}
},
{
"id": 1112,
"holiday": {
"name": null,
"giftSets": null
}
}
]
}
Quick Test
Я сделал быстрый тест, чтобы увидеть, какой должна быть полезная нагрузка.
@RequestMapping(method = RequestMethod.POST, value="/api/saveholiday")
public ResponseEntity<Map<String, Holiday>> saveHoliday(@RequestBody Holiday holiday) throws JsonProcessingException {
System.out.println(holiday);
fakeItTest();
return null;
}
private void fakeItTest() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
Set<GiftSet> giftSets2 = new HashSet<>();
GiftSet gg = new GiftSet();
gg.setId(1111);
gg.setHoliday(new Holiday());
giftSets2.add(gg);
GiftSet gg2 = new GiftSet();
gg2.setId(1112);
gg2.setHoliday(new Holiday());
giftSets2.add(gg2);
Holiday holiday2 = new Holiday();
holiday2.setName("HolidaySet");
holiday2.setGiftSets(giftSets2);
String a = objectMapper.writeValueAsString(holiday2);
System.out.println(a);
}
@Data
public static class Holiday{
private String name;
private Set<GiftSet> giftSets;
}
@Data
public static class GiftSet {
private Integer id;
private Holiday holiday;
}