-1

我創建了自己的自定義序列法JSON.NET, 的方法是這樣的:OutOfMemoryException異常在自定義序列 - JSON.NET

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
{ 
    var Obj = (xObject)value; 
    writer.WriteStartArray(); 

    foreach(var TargetObject in Obj)       
    { 
     writer.WriteStartObject(); 
     writer.WritePropertyName(TargetObject.Data.Key); 
     writer.WriteValue(TargetObject.Data.Value); 
     writer.WriteEndObject();   
    } 
    writer.WriteEndArray();   
} 

我在writer.WriteValue(TargetObject.Data.Value)有一個OutOfMemoryException例外,說內存不足,任何想法我可以保持我的自定義序列化,但避免這個問題?

請注意,是的,你是對的,我試圖序列化的對象超過1GB。

+1

你正在寫入內存?直接寫入磁盤。 – kristianp

+0

這可能只是一個錯字,但是調用'writer.WriteEndArray();'需要移到'foreach'循環之外。 – dbc

+0

@kristianp,我正在發送數據作爲http請求... –

回答

0

我終於找到了,原因是因爲從.NET中溢出String類型的異常。所以,簡單地說,它的字符串字段太大的數據,沒有解決方案,因爲json.net沒有問題,我的解決方案是簡化我的數據,或輸出爲驅動器上的文件,而不是存儲它的整個數據在內存中的任何時間作爲字符串字段,只是不可能的....

0

嘗試使用流媒體和PushStreamContent按this blog.

您可能不得不放棄JsonWriter和使用的無緩衝流做更多的手動序列化。

+0

不完全,我發現是字符串類型內部的異常溢出...它太大了,內置的字符串不能處理... –