当前位置: 首页 > 编程语言 > C#

遵循Ruby属性命名约定的C#JSON.NET约定?分享

时间:2023-04-11 03:07:14 C#

C#JSON.NET约定遵循Ruby属性命名约定?我正在使用http://json.codeplex.com/,我正在谈论基于Ruby的RestAPI。问题是大多数属性都有ruby??下划线命名约定。我想知道是否有人知道避免添加大量JsonProperty的方法。例如,我想避免添加JsonProperty属性并在序列化程序设置中建立约定,以便它知道尝试在.NET命名约定中使用下划线映射属性:)publicclassMember{[JsonProperty(PropertyName="avatar_url")]publicstringAvatarUrl{get;放;}[JsonProperty(PropertyName="twitter_screen_name")]publicstringTwitterScreenName{get;放;}[JsonProperty(PropertyName="website_url")]publicstringWebSiteUrl{get;放;更新——2016年9月:Json.NET9.0.1有SnakeCaseNamingStrategy。您可以使用它来自动拥有twitter_screen_name样式属性。继承自DefaultContractResolver并覆盖ResolvePropertyName以根据需要格式化属性名称。CamelCasePropertyNamesContractResolver对属性名称进行类似的全局更改。阅读这篇文章:http://nyqui.st/json-net-newtonsoft-json-lowercase-keyspublicclassUnderscoreMappingResolver:DefaultContractResolver{,@"([AZ])([AZ][az])|([a-z0-9])([AZ])","$1$3_$2$4").ToLower();从版本9开始,有一个新的命名策略属性,它有内置的SnakeCaseNamingStrategy类。使用下面的代码并将contractResolver注册为SerializerSettings.ContractResolver。varcontractResolver=newDefaultContractResolver();contractResolver.NamingStrategy=newSnakeCaseNamingStrategy();默认情况下,此类不包含字典,并且不覆盖任何手动设置的属性值。这是可以在重载中传递的两个参数://true参数强制处理字典//false防止序列化程序更改由属性手动设置的任何内容contractResolver.NamingStrategy=newSnakeCaseNamingStrategy(true,false);这个对我有用有用的varsettings=newJsonSerializerSettings{ContractResolver=newPascalCaseToUnderscoreContractResolver()};varrawJson="{test_property:'test'}"varmyObject=JsonConvert.DeserializeObject(rawJson,settings);使用Humanizerfunction“Underscore”https://www.nuget.org/packages/Humanizer/1.37.7http://humanizr.net/#underscore以上是C#学习教程:C#JSON.NETconventionfollowingRubypropertynamingconvention?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——);}MyObjectType类publicClassMyObjectType{publicstringTestProperty{get;set;}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: