【发布时间】:2020-01-31 20:54:26
【问题描述】:
我正在尝试将对象序列化为 camelCase,但我发现只有根级别的对象是正确的 camelCased。根级别以下的所有内容都以 PascalCase 的形式出现。我正在使用 Json.NET 12.0.3 和 .NET Framework 4.0 编写控制台应用程序。
public class Deal
{
public string Id { get; set; }
public string Name { get; set; }
public List<PublicId> PublicIds { get; set; }
}
public class PublicId
{
public string IdType { get; set; }
public string Value { get; set; }
}
要序列化我正在使用:
var json = JsonConvert.SerializeObject(deal, Formatting.Indented, new JsonSerializerSettings
{
DateFormatString = "yyyy-MM-dd",
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
结果 json 看起来像:
{
"id": null,
"name": "Deal 1",
"publicIds": [
{
"IdType": "ID1",
"Value": "A12"
},
{
"IdType": "ID2",
"Value": "B12"
}
]
}
正如您所见,IdType 和 Value 的值在 camelCase 中没有正确序列化,而是在 PascalCase 中序列化。在某些情况下,我需要更改默认 PascalCase 和 camelCase 之间的序列化,因此我将无法在序列化期间使用 JsonProperty 注释来强制使用 camelCase。此外,我想坚持使用 Json.NET 作为我项目的唯一 json 库。
有没有一种干净的方法可以得到我正在寻找的东西?
【问题讨论】:
-
你确定在任何地方都没有
JsonProperty属性吗? -
在 LinqPad 中运行它会生成所有属性都经过驼峰化处理的 json。缺少一些导致您的问题的信息。
标签: c# json serialization json.net .net-4.0