Asp.net mvc 4 ASP.NET MVC 4返回Json,导致双Json或空数据
我得到的不是空Json结果就是双Json结果,我还不知道为什么? 基线: 在chrome F12中看起来是这样的:{“id”:“收件箱”,“邮件”:[{“id”:1,…} 我的行动:Asp.net mvc 4 ASP.NET MVC 4返回Json,导致双Json或空数据,asp.net-mvc-4,json.net,jsonresult,Asp.net Mvc 4,Json.net,Jsonresult,我得到的不是空Json结果就是双Json结果,我还不知道为什么? 基线: 在chrome F12中看起来是这样的:{“id”:“收件箱”,“邮件”:[{“id”:1,…} 我的行动: public ActionResult Mail() { string qs = ""; foreach (var q in Request.QueryString) { qs += string.Format("{0}={1}&", q, Request.Quer
public ActionResult Mail()
{
string qs = "";
foreach (var q in Request.QueryString)
{
qs += string.Format("{0}={1}&", q, Request.QueryString[q.ToString()]);
}
var proxyRequest = "http://learn.knockoutjs.com/mail?" + qs;
var request = WebRequest.Create(proxyRequest);
var response = (HttpWebResponse)request.GetResponse();
var reader = new StreamReader(response.GetResponseStream());
var str = reader.ReadToEnd();
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(str);
//var json = JsonConvert.SerializeObject(data);
// Text Visualization looks good {"id":"Inbox","mails":[{"id":1,"from":"Abb....}
// no outside quotes, no escaped quotes
var res = Json(data, JsonRequestBehavior.AllowGet);
return res;
}
Chrome network trace已将数据加密了一倍。
“{\'id\':\'Inbox\',\'mails\':[{\'id\':1,\'from\':\'Ab..}”
因为我不知道Json实际上是什么,所以我做了newton软动态转换
JsonConvert.DeserializeObject
这可能就是我空洞回答背后的问题
任何帮助都将不胜感激。
谢谢您的第一个方法失败了,因为
Json()
无法理解从Json读取器返回的动态对象。第二个方法失败,因为
Json()
正在序列化预序列化的字符串
您可以使用
Content(jsonString,“application/JSON”)返回预序列化的JSON数据
我希望newtonsoft.json实现有一个MVC扩展,可以将动态对象作为JsonResults处理。我知道我会在大约6个月后忘记这一点。Thanks@SLaks,我认为这是一种不好的做法。Chrome会在控制台中产生不可预测的效果。@CodeFarmer:你们在说什么?若你们对answ满意的话呃,你能点击答案旁边的复选框接受吗?
var json = JsonConvert.SerializeObject(data);
// Text Visualization looks good {"id":"Inbox","mails":[{"id":1,"from":"Abb....}
// no outside quotes, no escaped quotes
var res = Json(json, JsonRequestBehavior.AllowGet);
return res;