РЕДАКТИРОВАТЬ (октябрь 2012)
Актуальный Jackson 2.x теперь поддерживает обработку идентификационной информации с аннотацией @JsonIdentityInfo
!Исходный ответ немного устарел ...
OBSOLETE
Джексон не поддерживает обработку идентификаторов объектов: это нетривиальная задачане так из-за идентификации общих объектов, что может быть сделано путем обхода графа объектов (влечет за собой некоторые накладные расходы), а скорее в том, чтобы выяснить, как включить идентификационную информацию;какие идентификаторы использовать и как.Это, в свою очередь, несколько похоже на включение информации о типе, но теперь добавляет второе измерение дополнительной обертки для обработки.Об этом раньше уже просили, и некоторые думали, как это сделать, но соотношение усилий к выгоде (то есть количество запросов, насколько это необходимо) было выше, чем добавление других функций.
Таким образом, лучше всего использовать объекты-оболочки и реализовать это вручную или взглянуть на XStream, который может решить эту проблему (когда он включен; он добавляет значительные накладные расходы во времени), а также имеет режим вывода JSON с использованием Jettison.
Реализация этого вручную для вашего варианта использования немного проще, чем решение общего случая: вы могли бы начать с BeanSerializerModifier, чтобы добавить обработчик-обертку, который может отслеживать идентификаторы объекта, и знать, что вместо этого сериализовать как идентификатор объекта.