Я использую jackson 1.9.2 с Hibernate/ Spring MVC через MappingJacksonHttpMessageConverter.
Джексон не может сериализовать двунаправленное отношение "один ко многим" и делает бесконечный цикл.
Я использую следующие классы:
-
Разговор, содержащий набор экземпляров SMS.
-
Каждый экземпляр SMS имеет набор телефонных номеров
-
Каждый PhoneNumber имеет родительский контакт (это двунаправленное отношение "много к одному" )
Я пытаюсь сделать сериализацию беседы.
Если я не использую @JsonManagedReference и @JsonBackReference, тогда джексон будет разбиваться из-за бесконечного цикла. Но когда я их использую, Контакт не сериализуется в PhoneNumber.
Class Contact { @JsonManagedReference List<PhoneNumber> phoneNumber ; } Class PhoneNumber { @JsonBackReference Contact contact; }
Вывод:
{ <--------------------- Conversation "id": 51, "smsSet": [ { "id": 53, "origin": 0123465, "destination": "06533844XY", "message": "Hello world!", "phoneNumbers": [ { "id": 64, "num": "06533844XY", "creationDate": 1333992533000, } ], } ], "creationDate": 1333992534000 }
вместо
{ <---------- conversation "id": 51, "smsSet": [ { "id": 53, "origin": 0123465, "destination": "06533844XY", "message": "Hello world!", "phoneNumbers": [ { "id": 64, "num": "06533844XY", "creationDate": 1333992533000, "contact": <--------------------- Missing part { "id": 12, "name": "Samuel Jackson", "primaryNumber": "06533844XY" } } ], } ], "creationDate": 1333992534000 }