C# 使用'发布JSON\/';被转义为'\\/';
发布以下JSON对象时,我当前面临一个问题:C# 使用'发布JSON\/';被转义为'\\/';,c#,.net,json,escaping,backslash,C#,.net,Json,Escaping,Backslash,发布以下JSON对象时,我当前面临一个问题: { "event": "orders.updated", "address": "http:\/\/82.75.163.12\/BiedMeerIntegration?connectionId=545", "is_active": true } 上面的问题是.NET会转义所有反斜杠字符,并按如下方式发布: { "event": "orders.updated", "address": "http:\\/\\/
{
"event": "orders.updated",
"address": "http:\/\/82.75.163.12\/BiedMeerIntegration?connectionId=545",
"is_active": true
}
上面的问题是.NET会转义所有反斜杠字符,并按如下方式发布:
{
"event": "orders.updated",
"address": "http:\\/\\/82.75.163.12\\/BiedMeerIntegration?connectionId=545",
"is_active": true
}
我尝试了不同的库(如ServiceStack和MicrosoftHttpClient),但它们都会导致相同的错误。我无法控制REST接口,它专门接受第一个JSON示例中所述的url格式
我还查看了.NET 4中的GenericUriParser选项,但似乎没有什么区别:
如何正确格式化请求?问题在于您的字符串:
{
"event": "orders.updated",
"address": "http:\/\/82.75.163.12\/BiedMeerIntegration?connectionId=545",
"is_active": true
}
实际上已经转义了,实际上是完全正确的JSON。请注意,在JavaScript和JSON中,转义
/
都是可选的,并且仅当此类符号位于之后时才需要转义。为什么要首先转义斜杠?如果地址字符串中确实包含反斜杠字符,那么这就是问题所在,转义是JSON编码器应该做的事情。由literal“foo\/bar”
生成的字符串中根本没有反斜杠字符;您看到的反斜杠是一个转义符,字符串只包含f
、o
、o
、//code>、b
、a
和r
。同样值得注意的是:没有理由在字符串文本中转义斜杠,但是,如果在JSON编码的结果中得到两个反斜杠,那么这些不是转义(如您所示),它们是应该删除的实际反斜杠。