WebAPI 2 未反序列化 POST 请求中 FromBody 对象的 List<string> 属性
WebAPI 2 not deserializing List<string> property of FromBody object in POST request
在我的一个 WebAPI 2 应用程序中,我在反序列化 FromBody
对象的 List<string>
属性 时遇到问题。 (该列表保持为空,而其他属性已正确反序列化。)
无论我做什么,如果我将 属性 更改为 string[]
,属性 似乎只能正确反序列化。对我来说不幸的是,属性 需要是 List<string>
.
类型
根据 ,我应该能够反序列化为 List<T>
,只要 T
不是 Interface
。
有没有人知道我可能做错了什么?
控制器:
public class ProjectsController : ApiController
{
public IHttpActionResult Post([FromBody]Project project)
{
// Do stuff...
}
}
项目对象class:
public class Project
{
public string ID { get; set; }
public string Title { get; set; }
public string Details { get; set; }
private List<string> _comments;
public List<string> Comments
{
get
{
return _comments ?? new List<string>();
}
set
{
if (value != _comments)
_comments = value;
}
}
public Project () { }
// Other methods
}
请求JSON:
{
"Title": "Test",
"Details": "Test",
"Comments":
[
"Comment1",
"Comment2"
]
}
你试过了吗?
public class Project
{
public List<string> Comments {get; set;}
public Project ()
{
Comments = new List<string>();
}
...
}
感谢@vc74 和@s.m。 ,我设法将我的项目对象 class 更新为如下所示,使其按照我希望的方式工作:
public class Project
{
public string ID { get; set; }
public string Title { get; set; }
public string Details { get; set; }
private List<string> _comments = new List<string>();
public List<string> Comments
{
get
{
return _comments;
}
set
{
if (value != _comments)
{
if (value == null)
_comments = new List<string>();
else
_comments = value;
}
}
}
public Project () { }
// Other methods
}
而不是试图阻止从Comments
获取一个null
值,我不得不防止设置值到null
.
在我的一个 WebAPI 2 应用程序中,我在反序列化 FromBody
对象的 List<string>
属性 时遇到问题。 (该列表保持为空,而其他属性已正确反序列化。)
无论我做什么,如果我将 属性 更改为 string[]
,属性 似乎只能正确反序列化。对我来说不幸的是,属性 需要是 List<string>
.
根据 List<T>
,只要 T
不是 Interface
。
有没有人知道我可能做错了什么?
控制器:
public class ProjectsController : ApiController
{
public IHttpActionResult Post([FromBody]Project project)
{
// Do stuff...
}
}
项目对象class:
public class Project
{
public string ID { get; set; }
public string Title { get; set; }
public string Details { get; set; }
private List<string> _comments;
public List<string> Comments
{
get
{
return _comments ?? new List<string>();
}
set
{
if (value != _comments)
_comments = value;
}
}
public Project () { }
// Other methods
}
请求JSON:
{
"Title": "Test",
"Details": "Test",
"Comments":
[
"Comment1",
"Comment2"
]
}
你试过了吗?
public class Project
{
public List<string> Comments {get; set;}
public Project ()
{
Comments = new List<string>();
}
...
}
感谢@vc74 和@s.m。 ,我设法将我的项目对象 class 更新为如下所示,使其按照我希望的方式工作:
public class Project
{
public string ID { get; set; }
public string Title { get; set; }
public string Details { get; set; }
private List<string> _comments = new List<string>();
public List<string> Comments
{
get
{
return _comments;
}
set
{
if (value != _comments)
{
if (value == null)
_comments = new List<string>();
else
_comments = value;
}
}
}
public Project () { }
// Other methods
}
而不是试图阻止从Comments
获取一个null
值,我不得不防止设置值到null
.