如何解决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 举报,一经查实,本站将立刻删除。