我正在为我的应用程序构建一个缓存系统,它将所有收到的JSON数据保存在Dictionary<string, CacheWrapper>
对象中,其中键(字符串)是要求数据的REST-url(即www.dataapi.com/事件/ 28127.json)
CacheWrapper
类:
class CacheWrapper {
object cachedObject { get; set; }
DateTime expires { get; set; }
public isValid() { /*...*/ }
}
当应用程序关闭时,此(可能)非常大的数据结构将使用JSON.net序列化并写入文件。 一切正常。问题出现在使用几天后,当用户累积了大量数据时(假设有2-3 MB的JSON数据)。当我尝试反序列化时,JSON.net抛出一个JsonReaderException
- 我怀疑它是因为它的大小。使用较少的数据,这可以正常工作。
提供给JsonConvert.DeserializeObject<T>(json)
的JSON字符串的大小是否有任何限制?还有其他原因吗?据我所知,生成的JSON是有效的(我测试了大约1.5 MB的数据,并通过了验证器)。
更新
我试图尽可能地滥用我的应用程序,最终获得了600万字符串的JSON(~12 mb)。出于某种原因,这很好。所以尺寸似乎不是问题。我之前提到的JsonReaderException
在反序列化JSON期间有一个问题(可能是非法的json然后......),但这本身很奇怪,因为我使用JSON.net对这些数据进行序列化和反序列化。这一直在变得更加怪异。我将继续全天测试并在此提及我的发现。