当前位置: 首页 > 面试题库 >

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

赵光赫
2023-03-14
问题内容

我有一个带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"}}



 类似资料:
  • 问题内容: 我想使用程序包执行Windows命令,但是Windows进行了一些奇怪的转义。 我有类似的东西: “SomeText” 但这会引发错误,因为Windows会将其转换为 有人知道为什么吗?如何使用exec程序包在Windows上执行? 谢谢! 问题答案: OK,这是一个比较复杂一点比你预期,但有 是 一个解决方案: 不幸的是,尽管在2011年添加了对此功能的支持,但它似乎尚未纳入文档中。

  • 问题内容: 示例:以下代码对JSON Spec有效吗? 还是应该始终使用以下语法?(如果是这样,为什么?) 我还没有在JSON规范中找到关于此的任何东西。尽管他们在示例中使用了围绕键的引号。 问题答案: 是的,您需要引号。这是为了使其更简单,并且避免了对javascript保留关键字必须使用另一种转义方法。

  • 问题内容: 我一直在努力寻找一种在Python中加载JSON对象的好方法。我发送此json数据: 到后端,它将以字符串形式接收,然后我用来解析它。 但是每次我遇到同样的异常: 我用谷歌搜索,但是除了这个解决方案之外似乎什么都没用,在我个人看来效率不高,因为它接受任何类型的数据,即使不是json格式的数据也是如此。 任何建议将不胜感激。 问题答案: 这个: 不是JSON。 这个: 是JSON。 编辑

  • 问题内容: 我正在使用Commons CSV来解析与电视节目有关的CSV内容。其中一个节目的节目名称带有双引号; 2010年9月10日116,6,2,29,“” JJ“(60分钟)”,“ http://www.tvmaze.com/episodes/4855/criminal- minds-6x02-jj ” 节目名称为“ JJ”(60分钟),该名称已用双引号引起来。这在封装的令牌和定界符之间抛出

  • 问题内容: 我在使用C#的ASP.NET 4中遇到了我的Web API的小问题。我正在尝试创建一个前端GUI,该GUI通过多个Web API发送和接收数据。拥有多个API的原因与我们的网络有关,该网络由几个安全区域组成。服务器位于不同的区域,一个简单的请求可能必须传递多达3个不同的API。 具体来说,我是从GUI向第一个API发送JSON对象。应该将JSON对象转发到下一个API和下一个API,然

  • 问题内容: 我需要在逗号处将字符串输入分解为数组。但是,字符串在引号内包含逗号。 输入: 返回$ linemysql为: 我如何才能做到这一点,而爆炸会忽略引号内的逗号? 问题答案: 由于您使用的是逗号分隔的值,因此可以使用。 将返回: