2010-05-11 4 views
0

현재 Serializable을 구현하지 않는 일부 객체를 직렬화하기 위해 XStream을 사용하고 있습니다. 객체가 Serializable을 구현하고 XML 직렬화에 실패한 경우 폴백 할 수있는 경우 XStream이 Java의 기본 직렬화를 사용하도록 지시 할 수 있습니까? 아니면 확인하기 위해 레이어 위에 간단한 레이어를 구현해야합니까?XStream serializable objects

덕분에, 제프

답변

1

이것은 좋은 생각되지 않을 것입니다. Java 직렬화는 2 진 표현이며, XML은 텍스트 표현입니다.

예를 들어 java.lang.String을 취하십시오. 이것은 Serializable을 구현하지만, 분명히 XML을 바이너리 BLOB로 직렬화하는 것을 원하지 않을 것입니다. 숫자 형 등과 같은 경우에도 마찬가지입니다.

XStream에는 사용자 지정 변환기를 등록하는 메커니즘이 있으므로 사용하는 것이 좋습니다. 바이너리 데이터를 XML 문서로 직렬화하기로했다면 어떻게 든 인코딩해야한다. Base64 인코딩.

+0

좋은 설명. 이 사실을 전체 객체 그래프에 적용하려고 생각하지는 않았습니다. 예를 들어 클래스 X를 직렬화하려고 시도하고 직렬화가 가능하다면 직렬화 가능으로 표시되어 있기 때문에 객체 그래프를 전체 텍스트로 가정합니다. Serializable로 표시되어 있지 않으면 해당 개체 (및 전체 개체 그래프)에 xml을 사용합니다. 그 이유는 내가 persistence를 위해 직렬화하고있는 많은 다른 객체를 가지고 있지만, 일부 객체는 XML을위한 거대한 표현을 가지고 있으며, 다른 데이터 형식으로 저장하려는 데이터 유형에 대한 표현이 많기 때문입니다. –