加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读