c# - Dictionary的序列化修改部分key为小写

标签 c# asp.net json.net

<分区>

关于 .NET 中序列化的快速问题(对它来说仍然很新)。

我有一条返回 Dictionary<string, ArbirartyModel[]> 的路线.问题在于结果。我把预期和实际放在下面。它似乎将所有字符降低到第一个下划线之前的 1 个字符,然后将其他所有内容都留在下面。

预期

{
  TEST_ONE: "Value",
  TEST_TOW: "Value"
}

实际

{
  tesT_ONE: "Value",
  tesT_TOW: "Value"
}

我环顾四周,似乎 this issue和其他一些相关,但不幸的是,我无法更改 Global.asax 中的任何内容

非常感谢任何帮助。

更新

[HttpGet, Route("result/goes/here")]
public IHttpActionResult ReturnResult()
{
   return Ok(new Dictionary<string, string>() {{"TEST_ONE", "Value"}, {"TEST_TOW", "Value"}});
}

Ok是 Web API 中 IHttpActionResult 的一部分 ( https://msdn.microsoft.com/en-us/library/dn314591.aspx )

最佳答案

您已将 JSON.NET 配置为使用驼峰式大小写序列化属性名称。不幸的是,在这方面,JSON.NET 会将每个键视为一个属性名称,从而将字典类型视为与对象类型相同。

有问题的配置看起来像这样:

JsonConvert.SerializeObject( <YOUR OBJECT>, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });

关于c# - Dictionary的序列化修改部分key为小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32949226/

相关文章:

c# - 在 Umbraco 7 中,我如何搜索具有自定义属性的所有成员?

c# - ASP.NET Web 窗体中的长进程 - 浏览器超时

.net - Tridion:发布时无法加载.Net dll

c# - 使用空白数组反序列化 JSON 对象

c# - 如何将json字典序列化/反序列化为数组

c# - 如何解析 XML 文件

c# - 如果不兼容,让 Json.NET 忽略 $type

c# - 无法将 lambda 表达式转换为类型 'string',因为它不是委托(delegate)类型

asp.net - Web 应用程序中的复杂过滤

c# - 打包/发布任务 Microsoft.Web.Publishing.Tasks.CreateProviderList 无法加载 Web 部署程序集