Json.NET将"不区分大小写的属性反序列化"列为广告功能之一.我已经读过,将首先尝试匹配指定属性的大小写,如果未找到匹配项,则执行不区分大小写的搜索.但是,这似乎不是默认行为.请参阅以下示例:
var result =
JsonConvert.DeserializeObject<KeyValuePair<int, string>>(
"{key: 123, value: \"test value\"}"
);
// result is equal to: default(KeyValuePair<int, string>)
Run Code Online (Sandbox Code Playgroud)
如果更改了JSON字符串以匹配属性的情况("Key"和"Value"vs"key"和"value"),那么一切都很好:
var result =
JsonConvert.DeserializeObject<KeyValuePair<int, string>>(
"{Key: 123, Value: \"test value\"}"
);
// result is equal to: new KeyValuePair<int, string>(123, "test value")
Run Code Online (Sandbox Code Playgroud)
有没有办法执行不区分大小写的反序列化?
从ASP.NET WebAPI Beta升级到RC已经提供了一些兴奋和很多挫折感.我已经能够解决大多数问题,但现在咬我的是JSON请求数据的区分大小写.
用于JSON请求的格式化程序(默认情况下是JSON.NET格式化程序)似乎区分大小写,而用于表单urlencoded数据的格式化程序则不区分大小写.有没有办法配置JSON请求以使用不区分大小写的格式化程序?
这是一个简单的例子来说明我对JSON请求的问题:
HTML/JavaScript
<button id="tester">Click here!</button>
<script type="text/javascript">
$(function () {
$("#tester").on("click", function() {
$.ajax({
type: "POST",
url: "/Api/Test/Index/" + 168,
data: ko.toJSON({ key: 123, value: "test value" }), // THIS FAILS
// Key: 123, Value: "test value" <- BUT THIS WORKS
contentType: "application/json; charset=utf-8",
statusCode: {
200: function () {
$("body").append("<p>Success</p>");
},
400: function () {
$("body").append("<p>Failure</p>");
}
}
}).always(function () {
$("body").append("<hr />");
});
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
C#
public class TestController : ApiController
{
public …
Run Code Online (Sandbox Code Playgroud) 今晚我决定尝试在Windows 7机器上使用Express构建一个简单的Node.js应用程序.安装进行得相当顺利,但Express拒绝合作.以下是我采取的步骤:
npm install express g
从命令提示符运行来安装Express .c:\source\node> mkdir newapp
.c:\source\node> cd newapp
.c:\source\node\newapp> express --sessions --css stylus
.此时,node.exe进程将以25%的CPU时间启动并无休止地运行并持续使用更多内存.运行20多分钟后,node.exe进程使用300+ MB的内存.该express
命令永远不会完成,newapp
目录保持不变.
如果我运行,express --help
我会在控制台中看到帮助输出.我已尝试运行命令提示符和管理员但仍然Express似乎挂起.
有没有人知道发生了什么或我做错了什么?提前致谢!
嘿伙计们,我在这里有点沮丧.我不太清楚发生了什么事.我从默认的MVC项目模板开始,然后继续添加一个控制器......
public class TestTemplatesController : EVController<EvTestTemplate>
{
//
// GET: /Tests/
[Authorize]
public ActionResult Index()
{
ViewData.Model = EntityList;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了Authorize属性,但它似乎不适用.处理对Controller的未经身份验证的请求,而不是重定向到.我确定我在这里遗漏了一些简单的东西,但我想我会问.
谢谢,
PK
Web.config文件:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section …
Run Code Online (Sandbox Code Playgroud)