JSON字符串反序列化为对象的数组列表 [英] Json string deserialized to array list of objects
问题描述
请帮助! 在反序列化时出现此错误:
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屋!