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,};
    var jsonString = JsonConvert.SerializeObject(pb,defaultSerializerSettings);

但是,两个字典的键都有pascalCased。

知道我在这里缺少什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)