JSON.NET出现System.OutOfMemoryException异常

3

我用JSON.NET 6.0试过了这个。

DataSet ds = Newtonsoft.Json.JsonConvert.DeserializeObject<DataSet>
("{\"tab1\":[{\"col1\":\"val1\"}]}"); // OK

DataTable dt = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>
("{\"col1\":\"val1\"}"); // System.OutOfMemoryException

为什么?

谢谢你。

3个回答

1
您的第二个示例中的JSON仅表示单行数据,而不是DataTableDataTableDataRows的有序集合,因此JSON需要使用方括号。请尝试改为以下方式:
string json = "[{\"col1\":\"val1\"}]";
DataTable dt = JsonConvert.DeserializeObject<DataTable>(json);

我不确定为什么你会遇到 OutOfMemoryException 错误;当我尝试时,我得到了 JsonSerializationException,这正是我所期望的。也许这是 Json.Net 最新版本中修复的错误。

1

0
我通过创建JsonSerializer对象来解决了这个问题。我的代码如下所示。
using (StreamReader r = new StreamReader(yourfilePath))
{
    using (JsonReader reader = new JsonTextReader(r))
    {
         JsonSerializer serializer = new JsonSerializer();
         T lstObjects =  serializer.Deserialize<T>(reader);
    }
}

这里的 yourfilePath :是您文件当前的完整路径 T :是您的对象名称,可以是数据集、数据表或任何自定义对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接