【问题标题】:Server not receiving lists inside of JSON object passed in服务器未接收传入的 JSON 对象内的列表
【发布时间】:2015-02-10 07:17:19
【问题描述】:

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

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":[{"Name":"C++","Id":null,"IsAssigned":null,"SkillCategoryId":3,"SkillCategoryMappingId":154},{"Name":"Unix ","Id":null,"IsAssigned":null,"SkillCategoryId":3,"SkillCategoryMappingId":219},{"Name":".Net","Id":null,"IsAssigned":null," SkillCategoryId":3,"SkillCategoryMappingId":139},{"Name":"Clearcase","Id":null,"IsAssigned":null,"SkillCategoryId":3,"SkillCategoryMappingId":155},{"Name" :"Uml","Id":null,"IsAssigned":null,"SkillCategoryId":3,"SkillCategoryMappingId":218},{"Name":"Xml","Id":null,"IsAssigned":null ,"SkillCategoryId":3,"SkillCategoryMappingId":239},{"Name":"Java","Id":null,"IsAssigned":null,"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":[{"Name":"Algorithms","Id":null,"IsAssigned":null ,"SkillCategoryId":3,"SkillCategoryMappingI d":null}],"PersonId":1203}

【问题讨论】:

  • 您查看过网络传输的 JSON 吗?这将是首先要检查的 - 然后您可以查看它是客户端问题还是服务器问题。
  • 是的,我有。据我所知,它很干净。我会在我的帖子中添加它的剪辑。

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


【解决方案1】:

我预计这是由于您的列表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; } 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2019-08-18
    相关资源
    最近更新 更多