我目前在C#中使用Newtonsoft JSON序列化将对象属性转换为小写 Camel 大小写时遇到了困难。下面是我使用的代码的简化版本:
[JsonObject(Title = "booking")]
public class BookingJsonModel
{
[JsonProperty("id")]
public Guid Id { get; set; }
[JsonProperty("reference")]
public string Reference { get; set; } = null!;
//...
}
字符串
我也试着申报一项财产
[JsonProperty(PropertyName = "reference")]
public string Reference { get; set; } = null!;
型
在序列化过程中,我尝试使用以下代码将属性名转换为小写camel大小写:
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
string body = JsonConvert.SerializeObject(data, settings);
型
尽管将ContractResolver设置为CamelCasePropertyNamesContractResolver()
,但属性保持不变,仍然以大写字母开头。看起来ContractResolver和JsonProperty属性在序列化过程中都被忽略了。
有人能提供指导或建议一种替代方法,以确保在C#中使用Newtonsoft JSON库将对象属性序列化为低驼峰大小写吗?对此问题的任何见解或解决方案都将不胜感激。谢谢!
2条答案
按热度按时间guykilcj1#
的
字符串
将原始JSON字符串中的属性名称“some name”Map到类定义中的SomeName属性。
如果你已经定义了你的类来使用属性名“SomeName”,你的模型上的大写就是JSONMap字符串的内容。
如果您希望您自己的模型使用小写单词,那么只需将您的模型定义为小写。
因此成为
型
但是,这违反了正常的命名约定,即属性应以大写字母开头。
或用
型
注解,这实际上应该解决你想要的。
7nbnzgx92#
如果您在C#中使用Newtonsoft.Json,并希望将属性名称转换为小写(例如,myProperty而不是MyProperty),则可以通过使用ContractResolver属性配置JsonSerializerSettings来实现。
下面是一个如何配置Newtonsoft.Json以序列化具有小写Camel大小写属性名称的对象的示例:
字符串
See the reference output