我当前使用Azure应用配置来存储所有配置数据。当我读取数据时,我希望使用Newtonsoft.Json
而不是默认的System.Text.Json
将我的数据正确转换为自定义类型。
不幸的是,我找不到一种方法来告诉Program.cs
文件中的HostBuilder
使用Newtonsoft.Json
而不是System.Text.Json
。我所有的转换器都是用Newtonsoft.Json
编写的,我真的不想把它们都迁移到System.Text.Json
。
例如:
public Enum SampleEnum
{
[Description("Sample")] SampleAbc
}
public class SampleConfig
{
public SampleEnum ConfigEnumA {get; set;}
}
// configuration is the IConfiguration object from Microsoft.Extensions.Configuration
var sampleConfig = new SampleConfig()
configuration.GetSection("section").bind(sampleConfig);
Description
值Sample
是来自Azure应用配置的字符串,理想情况下,我当前的Newtonsoft.Json
转换器应在绑定对象SampleConfig
时将其转换为SampleAbc
枚举值。这使我能够在代码中实现类型安全。
这意味着ConfigEnumA
的值应为SampleEnum.SampleAbc
,而不是Sample
我已经尝试使用,但它没有工作,虽然我正在使用HTTP触发器,而不是一个Web应用程序
var hostBuilder = new HostBuilder().ConfigureServices(services =>
{
services.AddMvc().AddNewtonsoftJson(options =>
{
options.SerializerSettings.Converters = <my-custom-converters>
}
)
});
如果没有办法在非Mvc应用程序的Azure Function应用程序中使用Newtonsoft.Json
,那么有人能帮助实现System.Text.Json
的相同行为吗?
谢谢你的帮助。干杯。
1条答案
按热度按时间mkshixfv1#
Services.AddMvcCore().AddJsonOptions(...)
用于 * 系统.文本.Json*,而builder.services.AddMvcCore().AddNewtonsoftJson(options =>
可用于 * 牛顿软件.json*。AddNewtonsoftJson()
扩展的NuGet中添加Microsoft.AspNetCore.Mvc.NewtonsoftJson
作为依赖项。Newtonsoft.Json
,您可以向您的函数项目添加启动,如下所示: