gpt4 book ai didi

c# - 自定义 json contractresolver .net web api 在某些情况下回落到 camelcase

转载 作者:行者123 更新时间:2023-11-30 18:31:19 28 4
gpt4 key购买 nike

在 asp.net web api 中,我想序列化我的 C# 属性(pascal 大小写),任何名称为“Links”的属性都应序列化为“_links”,其余属性应序列化为自身 Camel 肠衣。

到目前为止我有这段代码

public class MyCustomResolver : DefaultContractResolver
{
protected override string ResolvePropertyName(string propertyName)
{
if (propertyName == "Links")
{
return "_links";
}
return propertyName;
}
}

并在 WebApiConfig 的 Register 方法中使用它

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new MyCustomResolver();

我设法将链接序列化为 _links。为了“驼峰式”其余属性,我可以尝试使用网络中的一种方法在 C# 字符串中实现这一点,但我想知道是否有一种方法可以只使用内置的 Json.net CamelCasePropertyNamesContractResolver 我想应该针对所有场景进行更好的测试。我不知道怎么办

谢谢

最佳答案

好吧,这很明显,但昨天我看不到。我真丢人。自定义解析器不是继承自 DefaultContractResolver 而是继承自 CamelCasePropertyNamesContractResolver 然后我们可以调用基本方法

public class MyCustomResolver : CamelCasePropertyNamesContractResolver
{
protected override string ResolvePropertyName(string propertyName)
{
return propertyName == "Links" ? "_links" : base.ResolvePropertyName(propertyName);
}
}

关于c# - 自定义 json contractresolver .net web api 在某些情况下回落到 camelcase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20340045/

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