0
요청에서 응답 끝점으로 가져온 큰 JSON 조각을 deserialize하고 있습니다.사용자 지정 변환기를 사용하여 스트림에서 Json을 비 직렬화
는 난이 구성 될 때마다 ResultItem 위해 주입하는 몇몇의 메타 데이터의 필요
var serializer = new JsonSerializer();
var sr = new StreamReader(responseStream))
var jsonTextReader = new JsonTextReader(sr))
{
return serializer.Deserialize<ResultItem>(jsonTextReader);
}
아래의 코드를 사용한다. 내가
public class ResultItemConverter : CustomCreationConverter<ResultItem>
{
private Metadata typeMetadata;
public ResultItemConverter(Metadata typeMetadata)
{
this.typeMetadata = typeMetadata;
}
public override ResultItem Create(Type objectType)
{
return new ResultItem(this.typeMetadata);
}
}
다음과 같이 정의 컨버터를 썼다이를 위해 불행하게도 나는 역 직렬화 방법이 컨버터를 통과 할 수있는 방법을 볼 수 없습니다! 발견 된 모든 예제는 변환기를 지정할 수있는 'JsonConvert.DeserializeObject'메소드를 사용합니다.
내 질문 -
- 내가 직렬화 복원되는 객체의 ctor에 몇 가지 추가 정보를 전달해야하는 경우, 사용자 정의 변환기를 잘 내 방법은 무엇입니까?
- 어떻게 deserialization을 스트림과 함께 내 사용자 지정 변환기를 사용할 수 있습니까? 스트림을 문자열로 직렬화 할 수 없습니다. 그 결과는 OutOfMemoryException이됩니다.
jeez ... 'Converters'속성이 컬렉션이라는 사실을 간과했습니다. getter를보고 더 이상 보지 못했습니다! – alwayslearning