JavascriptSerializer,Deserializer,无法反序列化我的对象

NSN*_*NSN 5 .net c# json

我无法反序列化我的自定义对象.

public class UserInfo
{
  public int Id1 { get; set; }
  public string Code { get; set; }
  public int Id2 { get; set; }
  public List<string> Roles { get; set; }
  public string Eg1 { get; set; }
  public DateTime Time{ get; set; }
  public string Eg2 { get; set; }
  public string Version { get; set; }
}

JavaScriptSerializer serializer = new JavaScriptSerializer();

return serializer.Deserialize<UserInfo>(raw);
Run Code Online (Sandbox Code Playgroud)

Deserialize正在抛出异常

"无法将'System.String'类型的对象转换为'UserInfo'类型"

JSON内容:

"\"{\\\"Id1\\\":0,\\\"Code\\\":null,\\\"Id2\\\":0,\\\"Roles\\\":null,\\\"Eg1\\\":\\\"Eg2\\\",\\\"Time\\\":\\\"\\\\/Date(-62135596800000)\\\\/\\\",\\\"Version\\\":\\\"1.0.0.0\\\"}\""
Run Code Online (Sandbox Code Playgroud)

注意:如果不清楚,请告诉我.我会编辑这个问题.

- 编辑.ID2更改为Id2.真正的类在变量名称方面是不同的.因此这个问题.

Jac*_*cob 10

您的字符串是一个C#字符串,其中包含一个包含JSON的JavaScript字符串.如果没有修复您发送的内容,请按以下步骤进行反序列化:

var jsonString = serializer.Deserialize<string>(raw);
return serializer.Deserialize<UserInfo>(jsonString);
Run Code Online (Sandbox Code Playgroud)


Ada*_*dam 6

您正在将Javascript字符串传递给反序列化器,因为您的对象位于转义字符串中.

取消它之后,这就是序列化程序收到的内容:

"{\"Id1\":0,\"Code\":null,\"Id2\":0,\"Roles\":null,\"Eg1\":\"Eg2\",\"Time\":\"\\/Date(-62135596800000)\\/\",\"Version\":\"1.0.0.0\"}"

你真正想要发送的是:

{"Id1":0,"Code":null,"Id2":0,"Roles":null,"Eg1":"Eg2","Time":"\/Date(-62135596800000)\/","Version":"1.0.0.0"}"