对WebAPI的POST引导为NULL

时间:2018-08-08 17:36:30

标签: c# rest web-services asp.net-web-api

我正在将对象作为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为什么会被“无效化”有任何想法吗?

1 个答案:

答案 0 :(得分:2)

您确定字符串名称具有在json中传递的值吗? 我认为,如果要使用JsonSerializer反序列化,则像您的TransferObject这样的公共api不应具有内部属性(以及内部setter或getter)。 JsonSerializer是外部.dll,无法访问您的设置器。

让我们尝试公共设置器。