당신은 두 클래스 User
및 Event
이 방법으로 @JsonIdentityInfo
를 사용할 수 있습니다
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID")
public class User
{
private int id;
private List<Event> events;
// Getters and setters
}
... 그리고
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID")
public class Event
{
private int id;
private List<User> users;
// Getters and setters
}
당신은 ObjectIdGenerator
의 적절한 중 하나를 사용할 수 있습니다. 이제는 many to many 매핑에 해당하는 객체의 serialization 및 deserialization이 성공합니다.
public static void main(String[] args) throws IOException
{
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
Event event1 = new Event();
event1.setId(1);
Event event2 = new Event();
event2.setId(2);
User user = new User();
user.setId(10);
event1.setUsers(Arrays.asList(user));
event2.setUsers(Arrays.asList(user));
user.setEvents(Arrays.asList(event1, event2));
String json = objectMapper.writeValueAsString(user);
System.out.println(json);
User deserializedUser = objectMapper.readValue(json, User.class);
System.out.println(deserializedUser);
}
희망적입니다.
감사합니다. 내가 겪고있는 문제는 REST API 호출에서 문자열을 수신한다는 것입니다. 사용자 개체는 { "_ id": "51f1f8acf3ce41b062000005", "events": [{ "_id": "51f1fccef3ce41b062000007", "사용자": [{ "_id": "51f1f8acf3ce41b062000005"}]}}}와 유사합니다. 요청은 현재 사용자, 이벤트 목록 및 이벤트에있는 사용자를 리턴합니다. ObjectIdGenerators.PropertyGenerator.class, property = "_ id"를 사용했습니다. 하지만 User 객체 _id가 이벤트 배열에서 반복되기 때문에 참조 체인을 통해 이미 id가 POJO를 가졌습니다. models.User [ "events"] -> models.Event [ "users"] -> models.User [ "_ id "] – rOrlig
흠. 내 대답에 코드 샘플을 이상적으로 잘 작동합니다. 그러나 ID 속성에 문제가있는 경우,'User.java'와'Event.java'의'@JsonIdentityInfo' 주석 ('property = "userId"'및 'property = "eventId" "각각). – Jackall