我想在JSON中序列化數據。但我面臨異常。JSON對象不會序列化爲巨大的數據
OutOfMemoryException未被用戶代碼處理。
型 '的System.OutOfMemoryException' 的異常出現在Newtonsoft.Json.dll但在用戶代碼中沒有處理
下面我定義我的代碼:
主控制器:
public class TrackingController : BaseAngularController
{
var lstDetails = _services.GetTrackingDetailsByAWBIds(awbids, awbType);
if (lstDetails != null)
{
return AngularJson(lstDetails);
}
}
基地控制器:
public abstract class BaseAngularController : Controller
{
public AngularJsonResult<T> AngularJson<T>(T model)
{
return new AngularJsonResult<T>() { Data = model };
}
}
角JSON Result類:
public class AngularJsonResult<T> :AngularJsonResult
{
public new T Data
{
get { return (T)base.Data; }
set { base.Data = value; }
}
}
JSON Result類:
public class AngularJsonResult : JsonResult
{
public override void ExecuteResult(ControllerContext context)
{
DoUninterestingBaseClassStuff(context);
SerializeData(context.HttpContext.Response);
}
private void DoUninterestingBaseClassStuff(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
var response = context.HttpContext.Response;
response.ContentType = string.IsNullOrEmpty(ContentType) ? "application/json" : ContentType;
if (ContentEncoding != null)
{
response.ContentEncoding = ContentEncoding;
}
}
protected virtual void SerializeData(HttpResponseBase response)
{
if (ErrorMessages.Any())
{
Data = new
{
ErrorMessage = string.Join("\n", ErrorMessages),
ErrorMessages = ErrorMessages.ToArray()
};
response.StatusCode = 400;
}
if (Data == null) return;
response.Write(Data.ToJson());
}
}
序列化對象JSON:
public static class JsonExtensions
{
public static string ToJson<T>(this T obj, bool includeNull = true)
{
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Converters = new JsonConverter[] { new StringEnumConverter() },
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,//newly added
//PreserveReferencesHandling =Newtonsoft.Json.PreserveReferencesHandling.Objects,
NullValueHandling = includeNull ? NullValueHandling.Include : NullValueHandling.Ignore
};
return JsonConvert.SerializeObject(obj, settings);
}
}
她e我定義了AngularJson
傳遞對象的方法並覆蓋ExecuteResult
將Object轉換爲JSON的方法。
所以我SerializeData
方法傳遞Response
並轉換爲Objet公司在JSON,像Data.ToJson()
請讓我知道你的建議。
此代碼部署,在測試服務器上,或者是你通過一個測試它IDE?你在用什麼IDE? –
是這個代碼部署在測試服務器上。 –
所以這可能是一個JVM內存問題 - 這聽起來像你沒有分配足夠的內存來處理你想要序列化的任何東西。數據有多大? –