gpt4 book ai didi

ASP.NET WebMethod 返回用引号括起来的 JSON

转载 作者:行者123 更新时间:2023-12-04 11:16:46 25 4
gpt4 key购买 nike

我有一个带有 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' 下。我在网络方法或其他不带引号的情况下返回数据的方法中是否遗漏了什么?我真的不想每次都在客户端上剥离它。我也看过其他文章,但没有发生这种情况。

任何帮助将不胜感激谢谢。

最佳答案

我假设您想返回对象的 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"}}

关于ASP.NET WebMethod 返回用引号括起来的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com