使用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()
});
heronroc110 回答:使用Newtonsoft在驼峰式字典中使用字典密钥的Json序列化的奇怪行为

您确定使用的最新版本是Newtonsoft.Json,版本为12.0.3,我得到的结果与您的示例相关:

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

我没看到任何问题吗?

本文链接:https://www.f2er.com/3016003.html

大家都在问