Json字符串反序列化为对象的数组列表

use*_*087 2 .net c# serialization json deserialization

请帮忙!在反序列化时出现此错误:

无法将"System.String"类型的对象转换为"System.Collections.Generic.List"类型

来自客户端的JSON字符串:

"\"[{\\"id \\":\\"18_0_2_0 \\",\\"ans \\":\\"您可以输入自由文本代替 * \\"},{\\" id \\":\\"23_1_3_1 \\",\\"ans \\":\\"刷新按钮\\"},{\\"id \\":\\"11_2_1_2 \\",\\"ANS \\":\\ "假\\"}]\""

编辑:未转义(见评论):

[{"id":"18_0_2_0","ans":"您可以输入自由文字代替* "},{"id":"11_2_1_2","ans":"False"}]

JavaScriptSerializer serializer = new JavaScriptSerializer();
List<RawAnswer> ListAnswers = serializer.Deserialize<List<RawAnswer>>(str);
 [Serializable]
public class RawAnswer
{       
    public string QuestionID { get; set; }
    public string Answer { get; set; }

    public RawAnswer() { }

}

public class AnswerList
{
    public List<RawAnswer> RawAnswer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

L.B*_*L.B 9

你的原始json字符串(在aKzenT的编辑之前)被双重转义,我曾经var str2 = Regex.Unescape(str);得到实际的字符串.

public class RawAnswer
{
     public string id { get; set; }
     public string ans { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

而且没必要 AnswerList

现在你的代码可以工作了

JavaScriptSerializer serializer = new JavaScriptSerializer();
List<RawAnswer> ListAnswers = serializer.Deserialize<List<RawAnswer>>(str);
Run Code Online (Sandbox Code Playgroud)