Asp.net ajax &引用;值不能为空";使用C#/JavaScriptSerializer反序列化json时出错

Asp.net ajax &引用;值不能为空";使用C#/JavaScriptSerializer反序列化json时出错,asp.net-ajax,Asp.net Ajax,我试图将从asmx服务获取的一些JSON反序列化到对象列表中。类中的所有字段都与JSON中的字段匹配,JSON恢复有效,但我得到了一个看似神秘的错误: 值不能为null。参数名称:type 我的任何对象中都没有名为type的参数。以前有人见过这个吗 下面是引发错误的代码 System.Web.Script.Serialization.JavaScriptSerializer serr = new System.Web.Script.Serialization.JavaScriptSerializ

我试图将从asmx服务获取的一些JSON反序列化到对象列表中。类中的所有字段都与JSON中的字段匹配,JSON恢复有效,但我得到了一个看似神秘的错误:

值不能为null。参数名称:type

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

下面是引发错误的代码

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

json是前面声明的字符串,返回时带有与我的类中的字段匹配的有效json。您反序列化到的类的名称是否必须与json中的_type属性中的内容匹配?

我不确定您的问题出在哪里,但请尝试以下代码:


string input = "..."; // your asmx data
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<YourCustomClass> novos = new List<YourCustomClass>(
    serializer.Deserialize<YourCustomClass[]>(input)));

字符串输入=“…”;//您的asmx数据
JavaScriptSerializer serializer=新的JavaScriptSerializer();
列表novos=新列表(
反序列化(输入));

我通过避免使用javascript序列化程序并使用json.net库解决了我的问题。工作起来很有魅力。

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

// 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);
//以下操作失败
var serialiser=新的JavaScriptSerializer();
MyClass obj=serialiser.Deserialize(输入);
//但是下面的方法很好
var serialiser=新的JavaScriptSerializer(新的SimpleTypeResolver());
MyClass obj=serialiser.Deserialize(输入);

我发现只有在反序列化存在
\uu type
属性的JSON时(只有在使用类型解析程序序列化时才存在)才会出现此错误。如果您的JSON没有
\uuu type
属性,那么使用上述任一项进行反序列化似乎都可以正常工作。

您可以发布一些代码片段吗?我遇到了与OP相同的问题,尝试此操作时会出现错误
由于对象的当前状态,操作无效。
@shreader我猜该异常是另一个单独的问题,您只有在解决第一个问题后才能看到。是的,如果我没记错,我通过解析json字符串中的_类型解决了这个问题。如果您仍然存在这个问题,我认为您需要使用json.stringify(yourObj)在将字符串发送到web服务之前准备好字符串。我有相同的错误消息(…对象的当前状态),并使用此方法解决它