gpt4 book ai didi

asp.net-ajax - 使用C#/JavaScriptSerializer反序列化json时出现"Value cannot be null"错误

转载 作者:行者123 更新时间:2023-12-03 03:43:50 29 4
gpt4 key购买 nike

我正在尝试将从 asmx 服务获取的一些 JSON 反序列化为对象列表。类中的所有字段都与 JSON 中的字段匹配,JSON 返回有效,但我收到看似神秘的错误:

Value cannot be null. Parameter name: type.

我的任何对象中都没有名为 type 的参数。有没有人见过这个?

这是引发错误的代码。

System.Web.Script.Serialization.JavaScriptSerializer serr = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Rejection> l = serr.Deserialize<List<Rejection>>(json);

json 是之前声明的字符串,并返回与我的类中的字段匹配的有效 json。您要反序列化的类的名称必须与 json 中 __type 属性中的名称匹配吗?

最佳答案

我也刚刚得到这个 - 我相信它与在没有类型解析器的情况下初始化序列化程序有关:

// The following fails
var serialiser = new JavaScriptSerializer();
MyClass obj = serialiser.Deserialize<MyClass>(input);

// But the following works fine
var serialiser = new JavaScriptSerializer(new SimpleTypeResolver());
MyClass obj = serialiser.Deserialize<MyClass>(input);

我发现只有在反序列化具有 __type 属性的 JSON 时才会出现此错误(该属性仅在使用类型解析器进行序列化时才会出现)。如果您的 JSON 没有 __type 属性,则使用上述任一方法进行反序列化似乎都可以正常工作。

关于asp.net-ajax - 使用C#/JavaScriptSerializer反序列化json时出现"Value cannot be null"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1533536/

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