将JSON对象数组发布到Web API

时间:2017-05-03 17:27:10

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

我很难找到解决此问题的方法。 我的API控制器无法获取我发布的数组的内容,并且始终返回0元素。

模型类:

public class Author
{
    public int id { get; set; }
    public int referenceId{ get; set; }

    [Newtonsoft.Json.JsonIgnoreAttribute]
    public virtual ICollection<AuthorBook> AuthorBooks { get; set; }
}

public class AuthorBook
{
    public int authorId { get; set; }
    public int bookId { get; set; }
}

API控制器方法:

[Route("api/authorBooks")]
[HttpPost]
public IList getAuthorBooks(Author author)
{
    return author.AuthorBooks.ToList();
}

JavaScript客户端:

 var auhtorItem =
      {
          "id": 8,
          "referenceId" : 1 ,
          "AuthorBooks": [{ authorId: 9, bookId : 23 }, { authorId: 9 , bookId  : 25}]
      };

return $.ajax({
    url: booksUrl + "authorBooks",
    type: 'POST',
    data: JSON.stringify(auhtorItem ),
    dataType: 'json',
    contentType: 'application/json',
    crossDomain: true,
    cache: false
});

我能够获取id和referenceId值但是AuthorBooks为空且计数为0而不是2.

知道为什么吗?

1 个答案:

答案 0 :(得分:3)

尝试从Newtonsoft.Json.JsonIgnoreAttribute属性中删除AuthorBooks属性,以便在JSON序列化和&amp ;;反序列化:

public virtual ICollection<AuthorBook> AuthorBooks { get; set; }

而不是

[Newtonsoft.Json.JsonIgnoreAttribute]
public virtual ICollection<AuthorBook> AuthorBooks { get; set; }

您可以阅读有关JsonIgnoreAttribute及其示例的更多信息,了解其工作原理。