【问题标题】:Pass string with Quote in Json result在 Json 结果中传递带引号的字符串
【发布时间】:2014-06-14 12:06:27
【问题描述】:

我想向基于 REST 服务请求的浏览器发送 JSON 响应。我在控制器方法中使用了类似的包含一些引号

return Json("blah\"blah", JsonRequestBehavior.AllowGet);

我希望结果是blah"blah 但是 blah\"blah 并且也包括反斜杠!我想让blah"blah 响应,而无需在客户端进行任何转换。我知道需要通过 C# 代码执行此操作,但该怎么做呢?

【问题讨论】:

  • blah"blah 是非法 JSON。

标签: c# json string rest


【解决方案1】:

我在上面的两个帖子中找到了答案:

  1. ASP.Net MVC: how to create a JsonResult based on raw Json Data
  2. How to output Json string as JsonResult in MVC4?

所以我需要使用这样的东西:

return Content(jsonStringFromSomewhere, "application/json");

考虑到这一点,JSONP 用于 ajax 请求外部服务或 URL 的情况。但是由于使用特殊的解析器进行解析,我想构建特定的字符串,并且我使用 JSON 而不是 JSONP,结果非常好。

【讨论】:

    【解决方案2】:

    C# 和 JSON 对字符进行类似编码。字符串 blah"blah 在 C# 和 JSON 中编码为 "blah\"blah"。因此,您的原始 JSON 包含反斜杠是完全可以预料的。

    当您使用适当的 JSON 库对该字符串进行解码时,它再次变为字符串 blah"blah

    【讨论】:

    • 我可以将解码后的json格式的版本发送到浏览器吗?
    • @Amir 你似乎想要一个矛盾的东西:解码后的版本是blah"blah。如果以 JSON 格式发送,则为 "blah\"blah"。最有可能的是,您想要做的是将其作为 JSON 发送(您的代码似乎已经在执行此操作),然后在客户端对其进行解码,例如使用jQuery.parseJSON(myStr)(如果这不是自动完成的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多