从 c# json 响应中删除双反斜杠
Posted
技术标签:
【中文标题】从 c# json 响应中删除双反斜杠【英文标题】:Remove double backslash from c# json reponse 【发布时间】:2020-05-11 09:25:18 【问题描述】:我需要生成如下所示的字符串
"\xdata,BARCODE,004\x"
但我无法在代码中给出相似的值,因为 '\' 是转义序列,所以我都尝试过
"\\xdata,BARCODE,004\\x"
和
@"\xdata,BARCODE,004\x"
但是在 json 响应中(在 Postman 和 Java 客户端应用程序中)得到这样的
"\\xdata,BARCODE,004\\x"
无论如何要删除 \ 或得到响应
"\xdata,BARCODE,004\x"
【问题讨论】:
当您说您收到的响应为 \\x... 您在哪里看到的?是在某个地方显示您逃逸的数据吗?这会将单个 \ 显示为 \\ 当我使用邮递员客户端时,我会变成这样 甚至在 java 客户端应用程序中也得到同样的响应 每当您将字符串序列化为 JSON 时,都会有一些字符被替换或转义。反斜杠是那些“将被转义”字符之一,因为它是 JSON => json.org - “my \ string” = json serialize => “my \\ string” = json deserialize => “的转义字符我的\字符串" 如果你想要一个 JSON 响应 "\xdata,BARCODE,004\x" 那么抱歉没有办法,因为那是一个无效的 JSON . 【参考方案1】:抱歉,您给定的字符串是无效的 JSON 字符串,如果不转义反斜杠,就无法将其序列化为有效的 JSON。但是如果你的接收方需要得到这种结果,它根本不支持 JSON,你必须提供给定的格式。
在 ASP.Net 中,您的控制器必须将 ContentResult
作为 IActionResult
返回。在这种情况下,内容将按原样给出,无需任何序列化:
public IActionResult MyControllerMethod(SomeRequest request)
// Call your business model to receive the desired string...
var content = @"\xdata,BARCODE,004\x";
return Content(content);
// Or for full control
// return new ContentResult Content = content, ContentType = "text/glibberish", StatusCode = 418 ;
刚刚用 swagger/swashbuckle 测试了代码,一切似乎都很好:
还用 Postman 对其进行了测试:
使用 powershell:
【讨论】:
字符串生成内容失败 - var content = "\xdata,BARCODE,004\x" 对不起,因为在这个例子中文本是硬编码的,它必须被编译器转义。通过用@
符号标记文本来修复它。现在它可以编译了。
对不起,我试过这个得到“\\xdata,BARCODE,004\\x”,还有其他方法吗
开个玩笑,你应该接受text/plain
。
同样的结果是邮递员带有双反斜杠 "\\xdata,BARCODE,004\\x"以上是关于从 c# json 响应中删除双反斜杠的主要内容,如果未能解决你的问题,请参考以下文章