【问题标题】:How to unescape string property in Web API如何在 Web API 中取消转义字符串属性
【发布时间】:2016-10-06 16:56:46
【问题描述】:

我正试图围绕以下问题低头。我有一个返回 MediaInfo 的 WebAPI 服务,如下所示:

public List<MediaInfo> Get(string id)

MediaInfo 只是一个 DTO:

public class MediaInfo
{
    public string File { get; set; }
    public string Folder{ get; set; }
}

现在,在文件夹属性中存储了一个路径,例如“\\10.x.x.x\share\foldername”

当结果从 WebAPI 返回时,反斜杠会像这样转义:

[
  {
    "File": "GBHIST002242_RUS_xxx_HD_1.mp4",
    "Folder": "\\\\10.x.x.x\\share\\folder\\Archive"
  }
]

我似乎无法让 WebAPI 或 JSON.Net 不转义文件夹的内容。如何让 WebAPI / JSON.Net 格式化程序单独保留 Folder 属性?

[更新]:请参阅下面的答案

【问题讨论】:

  • 不应该 \10.x.x.x\share\foldername\\10.x.x.x\share\foldername 吗?我无法解释每次转义如何从一个反斜杠变为 4。如果您将文件夹字符串打印到屏幕上,一切都会再次正常。
  • 是的,这是 stackoverflow.com 格式化程序的转义问题:-),将在问题中解决。此外,结果直接从屏幕(chrome)复制。当我使用 IE 时,我可以将 Json 保存在一个文本文件中,该文件还包含重复的反斜杠。

标签: asp.net-mvc c#-4.0 asp.net-web-api json.net


【解决方案1】:

愚蠢的我,额外的反斜杠是有原因的:没有它们,它不再是有效的 json。请参阅使用 Json.Net 序列化包含反斜杠的字符串

此外,当您将 json 修改为所需的(不正确的)格式并以 https://jsonformatter.curiousconcept.com/ 之类的方式对其进行验证时,您会收到验证错误。

所以总而言之,这只是缺乏对 JSON 的了解。

【讨论】:

  • 所以,在回答原始问题时,如何取消转义字符串:只需正常反序列化 JSON!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 2014-05-06
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多