首页 > 解决方案 > ASP.NET Core 操作响应中的控制 Guid 格式

问题描述

假设我的 ASP.NET Core (API) 操作返回具有此属性的对象:

[WhatGoesHere("N")]                  // ?
public Guid MyGuid { get; set; }

它将被序列化为ffd76e47-609f-42bc-b6b8-b66dedab5561.

我希望它被序列化为ffd76e47609f42bcb6b8b66dedab5561. 在代码中是myGuid.ToString("N").

有没有我可以用来控制格式的属性?

标签: c#asp.net-corejson.netasp.net-core-2.2

解决方案


您可以实现自定义 JsonConverter,请参见此处。并配置您的 aspnet 核心应用程序以注册此 JsonConverter 以进行输出格式化。这样,每次您的应用程序将 Guid 序列化为 JSON 时,您都会以您想要的方式获得它:

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvc()
        .AddJsonOptions(options => {
            options.SerializerSettings.Converters.Add(new MyCustomConverter());
    });
}

您还可以选择一些特定的类来使用转换器,而不是全部使用转换器,方法是在其之上使用此属性:

[JsonConverter(typeof(MyCustomConverter))]
public class MyClass
{
    public Guid MyGuid { get;set; }
}

推荐阅读