POST GUID 到 WebAPI 以 NULL 形式接收



我正在将一个对象作为JSON发布到用C#编写的WebAPI服务中。其中一个属性是 Guid?(可为空(。即使填充了它,它也会被作为 NULL 接收。

为了说明这个问题,我有一个 C# 对象。

public class TransferObject
{
    public String Name { get; internal set; }
    public Guid? ID { get; internal set; }
}

发送到Web服务的JSON看起来像..

{
    "Name":"Robert Smith",
    "ID": "5bcf697c-5db1-4ae8-be28-5f6c4c972fcd"
}

网络服务方法看起来像...

[HttpPost]
public HttpResponse SaveName([FromBody] TransferObject model)
{
    Guid modelID = model.ID; // returns null
    String name = model.Name // "Robert Smith"
}

名称正在正确填充。任何人都知道为什么 Guid 在模型参数中被"无效"?

你确定字符串名称有在 json 中传递的值吗? 我认为如果您想使用 JsonSerializer 反序列化它,像您的 TransferObject 这样的公共 API 不应该具有内部属性(以及内部 setter 或 getter(。JsonSerializer 是外部.dll,无法访问您的资源库。

让我们尝试使用公共设置器。

最新更新