You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Newtonsoft JsonConvert反序列化时如何覆盖MaxDepth限制?

解决JSON反序列化时MaxDepth超出64限制的问题

问题场景

反序列化一个包含大量嵌套结构的JSON字符串时,抛出深度超出限制的错误:

The reader's MaxDepth of 64 has been exceeded. Path 'function.parameters[1].parameters[2].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[1].parameters[0].parameters[0].parameters[0].parameters', line 1066, position 145

尝试过的无效方案

通过JsonSerializerSettings设置MaxDepth为128,代码如下:

var trigger = JsonConvert.DeserializeObject<Trigger>(json, new JsonSerializerSettings { MaxDepth = 128 });

执行后依然抛出相同的超出64级深度限制的错误。

最终有效解决方案

排查发现代码库中存在自定义的JsonConverter子类,该类重写了库的默认反序列化行为。直接在ReadJson方法开头为JsonReader设置MaxDepth即可解决:

public class BaseConverter : JsonConverter
{
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        reader.MaxDepth = 128;

        JObject jObject = JObject.Load(reader);
        var target = Create(objectType, jObject);
        serializer.Populate(jObject.CreateReader(), target);

        return target;
    }
}

内容的提问来源于stack exchange,提问作者LazZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:32:36