gpt4 book ai didi

c# - 调试 JSON.NET

转载 作者:太空狗 更新时间:2023-10-29 17:31:41 24 4
gpt4 key购买 nike

我正在使用 JSON.NET 反序列化从 Web 服务返回的一些 JSON。不幸的是,我收到以下错误:

Cannot deserialize JSON array into type 'System.Collections.Generic.Dictionary`2[System.String,System.String]'.

但我不知道如何调试它。有没有办法让它告诉我有问题的 JSON 是什么?甚至它试图将其反序列化为什么?不幸的是,这是更大对象层次结构的一部分,因此它不仅仅是一段简单的 JSON。我试过单步执行代码,但是代码太长而且文档很少。如果它至少可以告诉我有问题的部分,那么我可以看看我是否搞砸了我的对象定义或其他东西。

最佳答案

如果你想反序列化你从 json 转换成 C# 类的东西,json.net 中有一些内置的东西可以做到这一点。只需创建一个设置对象并将其传递到您的反序列化对象调用中:

if (!string.IsNullOrEmpty(json))
{
var settings = new JsonSerializerSettings
{
Error = (sender, args) =>
{
if (System.Diagnostics.Debugger.IsAttached)
{
System.Diagnostics.Debugger.Break();
}
}
};

result = JsonConvert.DeserializeObject<T>(json, settings);
}

然后,当反序列化过程中出现错误时(如错误映射的 C# 类 -> json 对象),它会在调试器中中断。检查 args 对象,您将看到一个名为 CurrentObject 的属性。这是解析器尝试将 JSON 反序列化为的 C# 类(并将提供有关可能出现的错误的详细信息)。

希望对您有所帮助。

关于c# - 调试 JSON.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com