JSON字符串反序列化为对象的数组列表 [英] Json string deserialized to array list of objects

查看:575
本文介绍了JSON字符串反序列化为对象的数组列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Please help! Getting this error on Deserializing:

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

Cannot convert object of type 'System.String' to type 'System.Collections.Generic.List'

来自客户端的JSON字符串:

JSON string from client:

"\" [{{\\"id \\":\\"18_0_2_0 \\",\\"ans \\":\\您可以免费输入 文字代替 * \\},{\\" id \\:\\" 23_1_3_1 \\,\\" ans \\:\\"刷新按钮\\},{ \\"id \\":\\"11_2_1_2_2 \\",\\"ans \\":\\"False \\"}] \"

"\"[{\\"id\\":\\"18_0_2_0\\",\\"ans\\":\\"You can enter free text in place of *\\"},{\\"id\\":\\"23_1_3_1\\",\\"ans\\":\\"The refresh button\\"},{\\"id\\":\\"11_2_1_2\\",\\"ans\\":\\"False\\"}]\""

未转义(请参阅评论):

Unescaped (see comments):

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

[{"id":"18_0_2_0","ans":"You can enter free text in place of *"},{"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; }
}

推荐答案

您的原始json字符串(在aKzenT进行编辑之前)被两次转义,我使用var str2 = Regex.Unescape(str);来获取实际的字符串.

Your original json string(before aKzenT's edit) was double escaped and I used var str2 = Regex.Unescape(str); to get the actual string .

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

}

并且不需要AnswerList

现在您的代码可以工作了

Now your code can work

JavaScriptSerializer serializer = new JavaScriptSerializer();
List<RawAnswer> ListAnswers = serializer.Deserialize<List<RawAnswer>>(str);

这篇关于JSON字符串反序列化为对象的数组列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆