我得到空的 Json 结果或双 json 结果,我还不知道为什么?
基线: http ://learn.knockoutjs.com/mail? folder=Inbox 在 chrome F12 中看起来像这样:{"id":"Inbox","mails":[{"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;
}
所以基本上我是在代理调用,但问题是为什么返回的结果要么没有填写,要么是双 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;
Chrome 网络跟踪已将数据翻倍。"{\"id\":\"收件箱\",\"邮件\":[{\"id\":1,\"from\":\"Ab....}"
由于我不知道 Json 实际上是什么,所以我做了牛顿软动态转换 JsonConvert.DeserializeObject
这可能是我空洞回应背后的问题?
任何帮助将不胜感激。谢谢