gpt4 book ai didi

c# - .Net Core 3.0.100-preview6 - API Json 响应总是驼峰式,但我的类(class)不是

转载 作者:行者123 更新时间:2023-12-04 19:30:32 25 4
gpt4 key购买 nike

我有一个 .net core 3.0 preview 6 MVC 应用程序和 API。在 API 中,我使用第三方类库(我无法更改),它将类属性定义为使用 JsonProperty 的 Pascal 大小写,PropertyName 蛇形大小写,例如...

public class Company
{
[JsonProperty(PropertyName = "company_name")]
public string CompanyName { get; set; }

more properties ….
}

问题是,当我通过 api 提供这些时,它们以 Camel 大小写(.net core 3 的默认设置)到达 MVC 应用程序......然后无法反序列化回类模型。

无论我尝试什么,API 总是生成驼峰式 JSON,例如。上面的属性将被称为 companyName。

我试过了,

options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver { NamingStrategy = new CamelCaseNamingStrategy { OverrideSpecifiedNames = true } };

options.SerializerSettings.ContractResolver = new DefaultContractResolver { NamingStrategy = new DefaultNamingStrategy { OverrideSpecifiedNames = true } };

我已经在 camel 和默认的 ContractResolver 上尝试了 NamingStrategy = null。还尝试将 NamingStrategy 设置为 Snake

但输出的 Json 没有任何变化,它始终是驼峰式的。

通过在 MVC 应用程序中使用 ReadAsStringAsync,我可以看到结果字符串是驼峰式大小写的...我在使用 JsonConvert.DeserializeObject 时,属性始终为 null,因为名称或 Json PropertyName 都不匹配结果字符串中的名称.

这是 .net Core 预览中的错误还是遗漏了其他内容?

谢谢 Mustafa,您建议的重复项与我已经尝试过的解决方案有点相同,即将 ContractResolver/NamingStrategy 的设置更改为不同的值....但是,我的问题是没有一个建议的解决方案似乎对 API 响应有任何影响,它总是以驼峰形式返回。

有趣的是,当我将 NamingStrategy 更改为 Snake 时,Swagger 将模式显示为已设置(即蛇),但实际输出仍然是驼峰式!!!

此外,我无法控制基类,因此无法更改我尝试传输的类的名称/json 属性。

最佳答案

Microsoft.AspNetCore.Mvc.NewtonsoftJson

不出现默认值。尝试将此 nuget 包手动安装到您的服务项目。这对我有用。

关于c# - .Net Core 3.0.100-preview6 - API Json 响应总是驼峰式,但我的类(class)不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57182664/

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