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