我正在为我的应用程序构建一个缓存系统,它将所有接收到的 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 来对这些数据进行序列化和反序列化。这越来越奇怪了。我将全天继续测试并在这里提及我的发现。