Her*_*ahl 2 json.net jsonresult asp.net-mvc-4
我得到空的Json结果或双json结果,我不知道为什么呢?
基线:http : //learn.knockoutjs.com/mail? folder=Inbox在chrome F12中看起来像这样:{"id":"收件箱","邮件":[{"id":1,.... ..}
我的行动:
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;
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我代理了这个电话,但问题是为什么结果会回来,因为要么没有填写,要么双重jsoned.
使用chrome网络跟踪结果如上所示.[[[]],[[[[[]],[[]],[[]],[[]],[[]],...]
有效的json,只是空的.
当我改变代码看起来像这样
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;
Run Code Online (Sandbox Code Playgroud)
Chrome网络跟踪数据增加了一倍."{\" ID\":\" 收件箱\",\ "邮件\":[{\ "ID \":1,\ "从\":\ "抗体....}"
由于我不知道Json究竟是什么,我做了牛顿软动态转换JsonConvert.DeserializeObject
这可能是我空洞反应背后的问题?
真的很感激任何帮助.谢谢
您的第一种方法失败,因为Json()不了解从JSON阅读器返回的动态对象.
您的第二种方法失败,因为Json()序列化预序列化的字符串.
您可以使用返回预序列化的JSON数据 Content(jsonString, "application/json")
| 归档时间: |
|
| 查看次数: |
5338 次 |
| 最近记录: |