C# 字典的序列化将部分键修改为小写
关于.NET中序列化的快速问题(对它来说还是很新的) 我有一条返回C# 字典的序列化将部分键修改为小写,c#,asp.net,json.net,C#,Asp.net,Json.net,关于.NET中序列化的快速问题(对它来说还是很新的) 我有一条返回字典的路线。问题在于结果。我把预期和实际放在下面。它似乎将所有字符降低到第一个下划线前1个字符,然后将所有其他字符保留在下面 预期的 { TEST_ONE: "Value", TEST_TOW: "Value" } 实际值 { tesT_ONE: "Value", tesT_TOW: "Value" } 我一直在四处寻找,似乎和其他一些相关,但不幸的是,我无法在Global.asax中更改任何内容 任何帮助都将
字典
的路线。问题在于结果。我把预期和实际放在下面。它似乎将所有字符降低到第一个下划线前1个字符,然后将所有其他字符保留在下面
预期的
{
TEST_ONE: "Value",
TEST_TOW: "Value"
}
实际值
{
tesT_ONE: "Value",
tesT_TOW: "Value"
}
我一直在四处寻找,似乎和其他一些相关,但不幸的是,我无法在Global.asax中更改任何内容
任何帮助都将不胜感激
更新
[HttpGet, Route("result/goes/here")]
public IHttpActionResult ReturnResult()
{
return Ok(new Dictionary<string, string>() {{"TEST_ONE", "Value"}, {"TEST_TOW", "Value"}});
}
[HttpGet,Route(“result/go/here”)]
公共IHttpActionResult返回结果()
{
返回Ok(newdictionary(){{“TEST\u ONE”,“Value”},{“TEST\u TOW”,“Value”});
}
Ok
是Web API()中IHttpActionResult的一部分。您已将JSON.NET配置为使用驼峰大小写序列化属性名称。不幸的是,在这方面,JSON.NET将字典类型视为对象类型,将每个键视为属性名
有问题的配置将如下所示:
JsonConvert.SerializeObject(
,
新JsonSerializerSettings
{
ContractResolver=新的CamelCasePropertyNamesContractResolver()
});
你能把创建字典的代码和序列化字典的代码贴在哪里吗?@Bas应该加在那里。序列化发生在json.NET中。我不相信这是json.NET在做的事情。显示//在此处添加结果的实际实现…
。请参阅。本地窗口的结果显示与预期数据类似的键。因此,当combinations.Select(x=>x.key).ToArray()完成时,将返回以下内容[“APP\u INSTALLS”,“TEST\u STRING”]
很抱歉,我无法用简单的返回Ok(新字典{“CAPS”,“Foo”})代码>:它给我{“CAPS”:“Foo”}
。可能您有一些自定义序列化程序或更改了一些序列化设置,或者您正在使用某个库的特定版本。请再次阅读并包括所有相关细节