You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Json.NET将对象的特定属性转换为驼峰命名?

如何用Json.NET仅将特定属性序列化为驼峰命名

刚好碰到过类似的需求,给你两种实用的解决方案,看你场景选:


方法1:直接用JsonProperty特性(最简单,适合单个属性)

如果只是个别属性需要改命名,直接在目标属性上标记JsonProperty特性,指定你想要的名称就行,完全不用改全局序列化设置:

class A 
{ 
    public object B { get; set; } 

    // 直接指定序列化后的名称为"c"
    [JsonProperty("c")]
    public object C { get; set; } 
}

序列化的时候用默认方式就行:

var a = new A { B = 1, C = 2 };
var json = JsonConvert.SerializeObject(a);
// 输出结果:{"B":1,"c":2}

这种方法最直接,代码侵入性低,适合只改一两个属性的场景。


方法2:自定义ContractResolver(适合多个属性或动态场景)

如果你有一堆属性需要转驼峰,或者不想硬编码名称到实体类里,可以自定义一个解析器,只对指定属性应用驼峰规则:

public class SpecificCamelCaseResolver : DefaultContractResolver
{
    // 在这里列出需要转驼峰的属性名
    private readonly HashSet<string> _targetProperties = new HashSet<string> { "C" };

    protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
    {
        var property = base.CreateProperty(member, memberSerialization);
        
        // 如果是目标属性,就把首字母转小写
        if (_targetProperties.Contains(member.Name))
        {
            property.PropertyName = char.ToLowerInvariant(property.PropertyName[0]) + property.PropertyName.Substring(1);
        }
        
        return property;
    }
}

使用的时候指定这个解析器:

var settings = new JsonSerializerSettings 
{ 
    ContractResolver = new SpecificCamelCaseResolver() 
};
var a = new A { B = 1, C = 2 };
var json = JsonConvert.SerializeObject(a, settings);
// 输出结果:{"B":1,"c":2}

后续如果要加更多属性,只要在_targetProperties里添加属性名就行,不用动实体类,扩展性更好。


内容的提问来源于stack exchange,提问作者pushkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:07:08