服务器未接收传入的JSON对象内的列表

时间:2015-02-10 07:17:19

标签: c# json angularjs asp.net-web-api

这些是函数中使用的数据协定。

public class ResumeSkillsListDataContract : IResumeSkillsListDataContract
{
    public IList<ISkillDataContract> KnownSkillsList { get; set; }
    public IList<ISkillDataContract> BadSkillsList { get; set; }
    public IList<ISkillDataContract> NewSkillsList { get; set; }
    public Int32 PersonId { get; set; } 
}

public class SkillDataContract : ISkillDataContract
{
    public String Name { get; set; }
    public Nullable<Int32> Id { get; set; }
    public Nullable<Boolean> IsAssigned { get; set; }
    public Nullable<Int32> SkillCategoryId { get; set; }
    public Nullable<Int32> SkillCategoryMappingId { get; set; }
}

这是控制器中的功能。我期待三个填充列表和一个PersonId传入。但是,我只收到PersonId。在我的帖子中,我看到了我希望在控制台中看到的数据,但在调试控制器时, item .List每次都是空的。

  public IList<ISkillDataContract>      PostResumePersonSkills(ResumeSkillsListDataContract item)
        {
            var newList = item.KnownSkillsList;
            var ignoreList = item.BadSkillsList;
            var existingList = item.NewSkillsList;
            var personId = item.PersonId;


           return resumePersonSkillsBusinessLibrary.PostSkills(newList,      ignoreList, existingList, personId);
        }

以下是我发送到服务器的快照。知道什么可能是错的吗?感谢。

    $scope.doneWithSkills = function () {
        var resumeCollection = {
            KnownSkillsList: $scope.KnownSkillsList, BadSkillsList: $scope.IgnoredSkillsList,
            NewSkillsList: $scope.SaveAsSkillsList, PersonId:$scope.ParsedPerson.Person.PersonId

        };
        resumeParserService.PostResumeSkills(resumeCollection);
    };

resumeParserService中的函数

self.PostResumeSkills = function (skills) {
    var url = 'ResumeSkill/PostResumePersonSkills';
    console.log(skills);
    webApiService.Post(url, skills);
};

传递样本JSON。

{ “KnownSkillsList”:[{ “名称”: “C ++”, “ID”:NULL, “IsAssigned”:NULL, “SkillCategoryId”:3 “SkillCategoryMappingId”:154},{ “名称”:“Unix的“ ”ID“:空, ”IsAssigned“:空, ”SkillCategoryId“:3, ”SkillCategoryMappingId“:219},{ ”名称“:” 网络 “ ”ID“:空, ”IsAssigned“:空” SkillCategoryId “:3,” SkillCategoryMappingId “:139},{” 名称 “:” ClearCase的”, “ID”:空, “IsAssigned”:空, “SkillCategoryId”:3, “SkillCategoryMappingId”:155},{ “姓名” : “UML”, “标识”:NULL, “IsAssigned”:NULL, “SkillCategoryId”:3 “SkillCategoryMappingId”:218},{ “名称”: “XML”, “ID”:NULL, “IsAssigned”:空“SkillCategoryId”:3, “SkillCategoryMappingId”:239},{ “名称”: “Java” 的, “ID”:空, “IsAssigned”:空, “SkillCategoryId”:3, “SkillCategoryMappingId”:173},{”名称“:”Python“,”Id“:null,”IsAssigned“:null,”SkillCategoryId“:3,”SkillCategoryMappingId“:199},{”Name“:”Visual Basic“,”Id“:null,”IsAssigned “:NULL,” SkillCategoryId “:3”,SkillCategoryMappingId “:223}],” BadSkillsList “:[],” NewSkillsList “:[{” 名称 “:” 算法”, “标识”:NULL, “IsAssigned”:空“SkillCategoryId”:3,“SkillCategoryMappingI d “:空}],” PERSONID“:1203}

1 个答案:

答案 0 :(得分:0)

我希望这是由您的列表ResumeSkillsListDataContract作为接口列表引起的。问题是当反序列化JSON时,反序列化器不知道要实例化的具体类型。

尝试更改为此并查看它是否可以解决问题

public class ResumeSkillsListDataContract : IResumeSkillsListDataContract
{
    public IList<SkillDataContract> KnownSkillsList { get; set; }
    public IList<SkillDataContract> BadSkillsList { get; set; }
    public IList<SkillDataContract> NewSkillsList { get; set; }
    public Int32 PersonId { get; set; } 
}