.net core在ConfigureServices响应中将null转换为空字符串



我有API控制器-.net core 3.1-

当我调用方法时,我得到响应对象及其属性。

有些可能是空字符串。

我如何配置我的API返回空字符串而不是null?

我可以在Startup.cs中这样做吗?

?编辑

我使用了这个选项:services.AddMvc().AddJsonOptions(options => { options.JsonSerializerOptions.IgnoreNullValues = true; });

但是它会隐藏空属性,这是我不想要的

在经历了同样的挑战和研究之后,我发现你完全可以将null转换为空字符串,并且仍然在你的前端显示这些属性。

我使用了另一个答案(https://stackoverflow.com/a/67286291/11463515)作为参考,并做了以下操作。

步骤1:

在与Startup.cs文件相同的目录中创建一个新的类文件,并使用以下代码将其命名为NullToEmptyStringConverter.cs:

using System;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace API
{
public class NullToEmptyStringConverter : JsonConverter<string>
{
// Override default null handling
public override bool HandleNull => true;

public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => 
reader.TokenType == JsonTokenType.Null ? "" : reader.GetString();
public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options) =>
writer.WriteStringValue(value ?? "");
}
}

确保Startup.csNullToEmptyStringConverter.cs使用相同的命名空间!

步骤2:

在创建NullToEmptyStringConverter.cs文件之后,您现在可以简单地将以下内容添加到services.AddControllers()方法中,使其看起来像这样:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddJsonOptions(options => 
{
options.JsonSerializerOptions.Converters.Add(new NullToEmptyStringConverter());
});
}

应该是这样!这样,响应中所有值为NULLnull的字符串值将被替换为""

相关内容

  • 没有找到相关文章

最新更新