c# – 反序列化数组不支持JSON反序列化类型
发布时间:2020-12-15 17:48:30 所属栏目:百科 来源:网络整理
导读:我已经阅读了其他关于反序列化错误的两篇文章,但是我没有在任何地方发布自己的问题. 我有一个返回JSON的WCF服务.在反序列化特定类型时,它失败. 为了让您轻松地复制错误,我已经对下面的JSON进行了硬编码. 基本上你应该可以复制/粘贴下面的代码看到它失败. 消
我已经阅读了其他关于反序列化错误的两篇文章,但是我没有在任何地方发布自己的问题.
我有一个返回JSON的WCF服务.在反序列化特定类型时,它失败. 为了让您轻松地复制错误,我已经对下面的JSON进行了硬编码. 基本上你应该可以复制/粘贴下面的代码看到它失败. 消费者需要反序列化为工作对象. s.Deserialize失败,标题中提到错误消息. 注意:我知道我的JSON中有斜杠.那些在那里为方便的逃避报价.谢谢. 示例代码: var s = new JavaScriptSerializer(); var jstr = "[{"UserId":1,"WorkoutId":1,"WorkoutInfo":["Step 1","Step 2"]},{"UserId":2,"WorkoutId":2,"WorkoutInfo":["Step 1a","Step 2a"]},{"UserId":5,"WorkoutId":0,"WorkoutInfo":["new work1","new work 1","new work 1"]}]"; Workout blah = s.Deserialize<Workout>(jstr); var response = ServicePOST<Workout>("AddUserWorkout",workout); 和锻炼班: public class Workout { public int UserId { get; set; } public List<string> WorkoutInfo { get; set; } } 解决方法
问题是你告诉序列化器它只是一个单一的锻炼,而不是它们的列表/数组.这样做:
var blah = s.Deserialize<List<Workout>>(jstr); 这与您的问题没有直接关系,但如果可能,建议您使用Json.NET而不是JavaScriptSerializer. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |