Asp.net
ASP.NET WebMethod 返回用引號括起來的 JSON
我有一個帶有 WebMethod 的 asp.net 頁面,可以將 JSON 傳遞回我的 javascript。
波紋管是網路方法:
[WebMethod] public static string getData(Dictionary<string, string> d) { string response = "{ \"firstname\": \"John\", \"lastname\": \"Smith\" }"; return response; }當它返回給客戶端時,它的格式如下:
{ \"d\": \"{ \"firstname\": \"John\", \"lastname\": \"Smith\" }\" }問題是雙引號將所有內容都包裹在“d”下。我在 web 方法或其他一些不帶引號的返回數據的方法中遺漏了什麼?我真的不想每次都在客戶端上剝離它。我也看過其他沒有發生這種情況的文章。
任何幫助將不勝感激。
我假設你想返回對象的 JSON 表示
{ firstname:"John", lastname:"Smith" }但是您的方法簽名正在返回一個字元串。ASP.Net 框架序列化正確地序列化字元串
response。換句話說,如果你的功能是string response = "foo"; return response;如果輸出是
{"d":{"foo"}}恰好
response有需要轉義的雙引號。你顯然只是想得到對象。您有 2 個選擇:-
1)
eval在您的javascript中使用將字元串轉換為對象,例如function onSuccessCallback(retval) { var obj = eval(retval.d); }`2)或(這是我首選的解決方案)讓您的方法返回一個實際對象,並讓框架的 JSON 序列化為您完成繁重的工作
[WebMethod] public static object getData(Dictionary<string, string> d) { var response = new { firstname = "John", lastname="Smith" }; return response; }您會看到這會產生您可能最初預期的響應(例如
{"d":{"firstname":"John", "lastname":"Smith"}}