0
我正在反序列化一个大的JSON片段,作为响应正文从请求到REST端点。使用自定义转换器从流中反序列化Json
我使用下面
var serializer = new JsonSerializer();
var sr = new StreamReader(responseStream))
var jsonTextReader = new JsonTextReader(sr))
{
return serializer.Deserialize<ResultItem>(jsonTextReader);
}
代码我需要一些“元数据”它被构造时被注入每个ResultItem。为了实现这一点,我写了一个自定义转换如下
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);
}
}
可惜我看不到出路为此转换器传递到Deserialize方法!所有找到的例子都使用'JsonConvert.DeserializeObject'方法,它允许指定一个转换器。
我的问题 -
- 如果我需要一些额外的信息传递给对象的构造函数被反序列化,是我的一个自定义转换器正确的方法?
- 如何使反序列化与流一起使用我的自定义转换器?我无法将流序列化为字符串;导致OutOfMemoryException。
jeez ...完全忽略了“转换器”属性是一个集合的事实!看到了吸气剂,没有再看! – alwayslearning