c# - Json.Net - 为单个属性调整字典键序列化
问题描述
我正在使用带有 CamelCaseNamingStrategy 的 DefaultcontractResolver 来序列化我的字典。由于我无法控制的原因,我暂时必须将单个字典序列化为 PascalCase。然而,我似乎无法让它工作。
我设置我的序列化程序如下
var defaultSerializerSettings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore,
Converters = new List<JsonConverter> { new Newtonsoft.Json.Converters.StringEnumConverter(new CamelCaseNamingStrategy()) },
};
defaultSerializerSettings.ContractResolver = new DefaultContractResolver
{
NamingStrategy = new CamelCaseNamingStrategy
{
OverrideSpecifiedNames = true,
ProcessDictionaryKeys = true
}
};
我的测试类有两个字典,一个应该是默认序列化的,所以 camelCase 带有字典键,然后一个应该是 camelCase 但只留下字典键
internal class TestClass
{
[JsonProperty(NamingStrategyType = typeof(CamelCaseNamingStrategy), NamingStrategyParameters = new object[] { true, false })]
public Dictionary<string, string> CSVImportFileFieldMapping { get; set; }
public Dictionary<string, string> CSVImportFileFieldMapping2 { get; set; }
}
然后我创建一个测试对象并序列化它
var pb = new TestClass
{
CSVImportFileFieldMapping = new Dictionary<string, string> { { "Hello", "World" }, { "Gaga", "Gugu" } },
CSVImportFileFieldMapping2 = new Dictionary<string, string> { { "Hello", "World" }, { "Gaga", "Gugu" } },
};
var jsonString = JsonConvert.SerializeObject(pb, defaultSerializerSettings);
然而,这两个字典的键都是pascalCased。
知道我在这里缺少什么吗?