问题描述
我正在使用带有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,};
var jsonString = JsonConvert.SerializeObject(pb,defaultSerializerSettings);
但是,两个字典的键都有pascalCased。
知道我在这里缺少什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)