迫使JSON.Net转义正斜杠(solidus)字符的正确方法是什么?

时间:2011-04-26 23:13:55

标签: escaping json.net

因此,出于商业原因,我需要强制JSON.NET转义JSON blob,如下所示:

{ url: 'http://some.uri/endpoint' }

作为

{ "url": "http:\/\/some.uri\/endpoint" }

这就是说它需要逃避前向斜线的固定字符。我知道 JSON规范不需要这个,而且从技术上讲两者是相同的,但在这种特殊情况下,我需要用JSON.NET创建完全相同的字符串,因为我从某个地方获取其他

强制JSON.NET执行此操作的最佳方法是什么?

创建一个新的JSONConverter子类(例如MyPedanticStringConverter)并使用它是否有意义?

string json = JSONConvert.SerializeObject(
    myObject, 
    Formatting.None, 
    new MyPedanticStringConverter());

1 个答案:

答案 0 :(得分:2)

如果您正在寻找通用解决方案,那么编写转换器可能就好了。

另一种解决方案是以下列方式向类添加属性:

[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class MyObject
{
    public string Url
    {
        get;
        set;
    }

    [JsonProperty("url")]
    private string UrlJson
    {
        get { return this.Url.Replace("/", "\\/"); }
    }
}

(显然,您可以将Replace方法更改为更复杂,更彻底的方法)。

希望这有帮助。

米奇