在简要检查了这个source code后,似乎Json.Net的JsonConvert.DeserializeAnonymousType
方法从头到尾解析整个JSON输入,即使指定的匿名类型只有一个匹配的属性输入的开头,即使输入长度为5GB(夸大问题)。
此外,CheckAdditionalContent属性似乎仅适用于对象结束后显示的内容;即,错误的JSON语法和/或意外数据。
我没有找到会导致部分阅读的设置;即,在输入中发现所有属性时停止读取。
要明确的是,我希望在指定匿名类型时,类似于this partial deserialization example的行为是默认行为。
原因很简单:
当然,显而易见的替代方法是不使用Anonymous Type重载;但是,我问这个问题,因为它是关于预期的行为。无论如何,从语法上讲,我非常喜欢这种方法而不是替代方法。
我错了,或者在将匿名类型指定为合同时,Json.Net实际上是否总是反序列化整个输入?