空の Json 結果または 2 つの 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 ネットワーク トレースは、データを 2 倍に JSON 化しました。"{\"id\":\"Inbox\",\"メール\":[{\"id\":1,\"from\":\"Ab....}"
Jsonが実際に何であるかわからないので、 newton soft dynamic convert JsonConvert.DeserializeObject を行いました
それが私の空の応答の背後にある問題かもしれませんか?
どんな助けでも本当に感謝します。ありがとう