gpt4 book ai didi

json.net - StringEnumConverter 用作属性但不是全局的

转载 作者:行者123 更新时间:2023-12-04 15:24:13 26 4
gpt4 key购买 nike

我们正在实现 .NET Core 3.1 API,并且根据 this doc 使用 Microsoft.AspNetCore.Mvc.NewtonsoftJson .我们正在处理枚举,我们需要字符串表示而不是整数。我们正在使用 JsonConverter 属性来执行此操作,如下所示:

[JsonProperty("region")]
[JsonConverter(typeof(StringEnumConverter))]
public Region Region { get; set; }

我们正在尝试从如下所示的 Startup.cs 全局执行此操作:

services.AddControllers().AddNewtonsoftJson(opts => opts.SerializerSettings.Converters.Add(new StringEnumConverter()));

如果我们这样做,Cosmos DB 会提示

"PartitionKey extracted from document doesn't match the one specified in the header"

所以我们尝试删除除区域一以外的所有属性。所有其他不具有该属性的枚举都正确存储为字符串,但该区域仍然需要该属性才能工作。任何线索为什么会发生这种情况以及如何解决它?

最佳答案

在 netcore 3.1 或更高版本中,您可以使用 JsonStringEnumConverter:

 var options = new JsonSerializerOptions
{
Converters = { new JsonStringEnumConverter() },
//other options
};

尝试 Example在线

关于json.net - StringEnumConverter 用作属性但不是全局的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62644161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com