2011-04-26 20 views
6

Así que por razones de negocios que necesitan para forzar JSON.NET escapar una gota JSON así:¿Cuál es la forma correcta de forzar a JSON.Net a escapar de los caracteres de barra diagonal (solidus)?

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

Como

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

Lo que quiere decir que tiene que escapar del avance -slash caracteres de solidus. I saber la especificación JSON no requiere esto, y técnicamente los dos son iguales, pero en esta situación particular necesito crear exactamente la misma cadena con JSON.NET que la que obtengo de otro lado.

¿Cuál es la mejor forma de obligar a JSON.NET a hacer esto?

¿Tendría sentido crear una nueva subclase JSONConverter (por ejemplo, MyPedanticStringConverter) y usar eso como tal?

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

Respuesta

2

Si está buscando una solución genérica, escribir un convertidor es quizás el camino a seguir.

Otra solución, sería añadir una propiedad a la clase de la siguiente manera:

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

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

(Usted, evidentemente, puede cambiar el método de reemplazar a algo más profundo y más sphisticated).

Espero que esto ayude.

Mikey

Cuestiones relacionadas