원형 의존성을 가진 객체 그래프를 JSON에 직렬화 할 때 JSON이 무한히 커지지 않도록하려면 어떻게 든 대처해야합니다. 잭슨 개체의 신원을 추적하는 기능을 제공하며 즉시 객체가 두 번째로 직렬화되는대로 참조를 사용되고있는 다음과 같은 클래스의 목록을 고려 예를 here.JSON 직렬화의 사용자 정의 객체 ID
에 대한 참조 직렬화
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id")
public class FooBar
{
public String foo;
}
같은 객체 목록을 여러 번에있는 경우, 이것은 당신이 strongely 입력 환경에있을 때 당신은 객체의 구조를 알고있는 경우 다음과 같은 직렬화 된 JSON 문자열
[
{
"@id": 1,
"foo":"bar"
},
{
"@id": 2,
"foo":"baz"
},
1 //reference to the object with @id = 1
]
결과 이 JSON에서 deserialised하고 싶다면, 이것은 문제가되지 않습니다. 그러나 구조를 모르는 경우 어떤 항목이 참조이고 간단한 정수인지 전혀 알 수없는 문제가 있습니다. 맞습니까?
지금, 아주 간단한 해결책이 같은 JSON 모양이하는 것입니다 :
[
{
"@id": 1,
"foo":"bar"
},
{
"@id": 2,
"foo":"baz"
},
{
"@ref":1
}
]
당신은 단순히 전체 개체 그래프를 통해 이동하고 회원 @ref
이있는 경우 각 개체에 대해 확인할 수 있습니다이 방법을, 그렇다면 해당 객체로 바꿉니다.
두 번째 예제처럼 보이는 JSON을 생성하고 싶습니다. 아무도 이미 이것을 했습니까? 그렇지 않은 경우 정확한 시작 지점은 사용자 정의 ObjectIdGenerator 또는 사용자 정의 직렬화 기일 것입니까? https://github.com/jsog/jsog-jackson
프로토콜 자세한 내용은 여기 :