首页 > 解决方案 > 使用Newtonsoft在驼峰式中对字典键进行Json序列化的奇怪行为

问题描述

我正在使用 Newtonsoft CamelCasePropertyNamesContractResolver 将对象序列化为 json。我看到字典键的奇怪属性名称转换。

为什么键变DEMO => demo但是DEMO Long => demO Long(大写O而不是小o)?

更多测试:

Dictionary Key        Json Property Name(After serialization)
------------          ----------------
THISISMYKEY           thisismykey
DEMO                  demo
DEMO Long             demO Long
LONGDEMOKAY           longdemokay
OOOO oOOOoo           oooO oOOOoo       

C# 代码供参考:

Dictionary<string, long> collection = new Dictionary<string, long>();
collection.Add("THISISMYKEY", 100);
collection.Add("DEMO", 200);
collection.Add("thisissmallkey", 300);
collection.Add("LONGDEMOKAY", 400);
collection.Add("THISISOTHER", 500);
collection.Add("OOOO oOOOoo", 600);
collection.Add("DEMO Long", 700);

var response = JsonConvert.SerializeObject(collection, new JsonSerializerSettings{
  ContractResolver = new CamelCasePropertyNamesContractResolver()
});

标签: c#dictionaryserializationjson.net

解决方案


您确定拥有最新版本的 Newtonsoft.Json,版本为 12.0.3,我的结果与您的示例相关:

{"thisismykey":100,"demo":200,"thisissmallkey":300,"longdemokay":400,"thisisother":500,"oooo oOOOoo":600,"demo Long":700}

我没有看到任何问题?


推荐阅读