【发布时间】:2016-09-20 23:27:50
【问题描述】:
由于各种原因,我已从 ASP.NET MVC 的内置 JSON 序列化程序(返回 (参见下面的编辑))切换到牛顿软件。直到我开始测试前我才意识到前者返回一个 JavaScript 对象字面量,而 Newtonsoft 返回一个 JSON 格式的 string。System.Web.Mvc.JsonResult 对象的那个
我喜欢不必在客户端解析 JSON 字符串 — 将其作为对象文字非常方便 — 但出于其他技术原因,我想坚持使用 Newtonsoft。
例如,而不是在我的客户端上看到此结果...
"{"Errors":["Please enter a valid email address."],"HasErrors":true}"
...我想看看这个结果:
{"Errors":["Please enter a valid email address."],"HasErrors":true} // no quotes
有没有办法让 Newtonsoft 返回 JS 对象字面量而不是字符串?
编辑
我提出问题的方式并不是最好的。 JsonResult 类型没有任何问题。事实上,解决方案仍然使用它。唯一的问题是默认的 Controller.Json 方法,可以覆盖它以使用 Newtonsoft (Json.NET) 而不是内置的序列化程序。
【问题讨论】:
-
我对 .NET 世界不太熟悉 - Newtonsoft 在服务器上吗?因为如果是这样,您将永远无法从服务器返回 JS 文字。无论如何,不在网络请求中。还是在渲染时嵌入在页面中的某个地方?
-
你不能用 JSON.Parse(response) 编辑你的 JS 文件吗?
-
您如何使用 Json.Net 创建 JSON 响应并从 MVC 返回它们?
-
@vlaz 是的,Newtonsoft 是一个用于处理所有“JSON”的 .NET 小型框架。看起来它们确实是作为 JS 文字出现的——它们甚至具有
application/json的 MIME 类型。但是它目前使用 Newtonsoft 的方式是,它们以 JSON 字符串的形式出现,MIME 类型为text/html。 -
你能分享你用来插入Json.NET的代码吗?是否类似于Using JSON.NET to return ActionResult 或Using JSON.NET as the default JSON serializer in ASP.NET MVC 3 - is it possible?? Json.NET 不会通过用引号括住对象来序列化对象,因此插入 Json.NET 的方式很可能出现问题。
标签: javascript json asp.net-mvc json.net