6 votes

Quelle est la bonne façon de forcer JSON.Net à échapper aux caractères slash (solidus) ?

Pour des raisons professionnelles, je dois donc forcer JSON.NET à échapper un blob JSON de la manière suivante :

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

En tant que

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

En d'autres termes, il doit échapper aux caractères solidus à barre oblique vers l'avant. I savoir la spécification JSON ne l'exige pas et, techniquement, les deux sont égaux, mais dans cette situation particulière, j'ai besoin de créer exactement la même chaîne avec JSON.NET que celle que j'obtiens d'un autre endroit.

Quelle est la meilleure façon de contraindre JSON.NET à le faire ?

Serait-il judicieux de créer une nouvelle sous-classe de JSONConverter (par exemple MyPedanticStringConverter) et de l'utiliser de la sorte ?

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

2voto

Mikey S. Points 1159

Si vous recherchez une solution générique, l'écriture d'un convertisseur est peut-être la meilleure solution.

Une autre solution consisterait à ajouter une propriété à la classe de la manière suivante :

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

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

(Vous pouvez évidemment changer la méthode Replace pour quelque chose de plus sophistiqué et de plus approfondi).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X