我正在将对象作为JSON发布到用C#编写的WebAPI服务中。属性之一是Guid? (可为空)。即使填充了它,也将其作为NULL接收。
为了说明这个问题,我有一个C#对象。
public class TransferObject
{
public String Name { get; internal set; }
public Guid? ID { get; internal set; }
}
发送到WebService的JSON类似于..
{
"Name":"Robert Smith",
"ID": "5bcf697c-5db1-4ae8-be28-5f6c4c972fcd"
}
Web服务方法看起来像...
[HttpPost]
public HttpResponse SaveName([FromBody] TransferObject model)
{
Guid modelID = model.ID; // returns null
String name = model.Name // "Robert Smith"
}
正在正确填充名称。有人对 model 参数中的Guid为什么会被“无效化”有任何想法吗?
答案 0 :(得分:2)
您确定字符串名称具有在json中传递的值吗? 我认为,如果要使用JsonSerializer反序列化,则像您的TransferObject这样的公共api不应具有内部属性(以及内部setter或getter)。 JsonSerializer是外部.dll,无法访问您的设置器。
让我们尝试公共设置器。