0

我正在为我的应用程序构建一个缓存系统,它将所有接收到的 JSON 数据保存在一个 Dictionary<string, CacheWrapper>对象中,其中键(字符串)是请求数据的 REST-url(即 www.dataapi.com/events/28127.json)

CacheWrapper班级:

class CacheWrapper {
  object cachedObject { get; set; }
  DateTime expires { get; set; }
  public isValid() { /*...*/ }
}

当应用程序关闭时,这个(可能)非常大的数据结构会使用 JSON.net 序列化并写入文件。这一切都很好。问题出现在使用几天后,当用户积累了大量数据(比如 2-3 MB 的 JSON 数据)。当我尝试反序列化它时,JSON.net 抛出一个JsonReaderException- 我怀疑这是因为它的大小。对于较少量的数据,这工作得很好。

给定的 JSON 字符串的大小是否有任何限制JsonConvert.DeserializeObject<T>(json)?会不会有其他原因?据我所知,生成的 JSON 是有效的(我在大约 1.5 mb 的数据上对其进行了测试,并且通过了验证器)。

更新:

我试图尽可能多地滥用我的应用程序,最终得到了一个 600 万个字符串的 JSON (~12 mb)。出于某种原因,这很好用。所以尺寸似乎不是问题。我JsonReaderException之前提到过在 JSON 的反序列化过程中存在一个问题(可能是非法的 json ......),但这本身就很奇怪,因为我使用 JSON.net 来对这些数据进行序列化和反序列化。这越来越奇怪了。我将全天继续测试并在这里提及我的发现。

4

1 回答 1

0

尝试使用.NET DataContractJsonSerializer
它更加灵活和强大,并且允许您使用流(如果可用)。

于 2013-04-23T12:26:21.813 回答