2013-08-22 2 views
1

많은 JsonSerializers가 등록 된 복잡한 트리를 직렬화하고 있는데 데이터를 저장하는 데 사용할 수있는 컨텍스트가 없습니다. 예를 들어 트리에서 노드를 로컬 화해야하고 트리에서 직렬화되는 현재 위치를 기반으로 지역화 키를 작성해야한다고 가정합니다. 그걸 어떻게하는 지 아는가? JsonGenerator와 SerializerProvider는 그런 것을 제공하지 않습니다.JsonSerializers를 사용할 때 직렬화 컨텍스트가 있음

@Override 
public void serialize(TreeSection value, JsonGenerator jgen, SerializerProvider provider) { 
    // MISSING some kinda context here 
} 

답변

0

가장 좋은 방법은 이러한 정보를 전달하는 데 ThreadLocal을 사용하는 것입니다.

https://github.com/FasterXML/jackson-databind/issues에 제한된 형태의 콘텐츠 저장소 추가를 요청할 수도 있습니다. 이는 합리적인 요청 인 것처럼 들립니다.

+0

시리얼 라이저의 단순한 멤버가 그것을하지 않겠습니까? – Katona

+0

@Katona : 많은 시리얼 라이저가 트리의 직렬화에 참여하고 있습니다. – lisak

+0

@Sloin 실제로, 나는 그것을 놓쳤습니다 ... 저는 Jackson의 고급 사용자는 아니지만, 당신의 컨텍스트 (즉,'HashMap')를 공유 할 수 있습니다 serializer는 생성자를 통해이를 제공합니다. 나는'ThreadLocal'에 아무런 문제가 없다. 단지 다른 목적을 위해 만들어진 것일 뿐이다. – Katona

관련 문제