【问题标题】:Strange behavior with Json Serialization of dictionary key in camelcase using Newtonsoft使用Newtonsoft在驼峰中对字典键进行Json序列化的奇怪行为
【发布时间】:2020-03-23 20:24:02
【问题描述】:

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

为什么改键DEMO => demoDEMO 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# dictionary serialization json.net


    【解决方案1】:

    你确定有最新版本的 Newtonsoft.Json,版本 12.0.3,我有这个结果与你的例子有关:

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

    我没有发现任何问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      相关资源
      最近更新 更多