2 votes

Sérialisation en JSON en C# et désérialisation en TS

J'ai un problème pour envoyer des données entre mes deux applications. Je sérialise les données en JSON en C# en utilisant ce code :

public static string SerializeToJson<T>(this T obj)
{
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
    MemoryStream ms = new MemoryStream();
    serializer.WriteObject(ms, obj);
    byte[] array = ms.ToArray();
    return Encoding.UTF8.GetString(array, 0, array.Length);
}

puis je l'envoie en utilisant la communication par socket à ma deuxième application qui est implémentée en TypeScript. Je le désérialise en utilisant :

JSON.parse

et cela fonctionne bien, mais si les données contiennent des caractères spéciaux, par exemple 8211 '-', une exception est levée.

SyntaxError: Unexpected token  in JSON at position 907

Il s'agit peut-être d'un problème d'encodage différent lors de la sérialisation et de la désérialisation, mais je ne sais pas quel encodage est utilisé dans JSON.parse.

Quelqu'un peut m'aider ?

2voto

Demonia Points 159

Une alternative est d'utiliser Newtonsoft Json.Net (disponible à partir de nuget). Il est facile à utiliser et très puissant.

public static string SerializeToJson<T>(this T obj)
{
    return JsonConvert.SerializeObject(obj);
}

Et vous pouvez même ajouter du formage ou ce que vous voulez.

0voto

kedziorsc Points 21

Je résous ce problème en convertissant ma chaîne en base64, puis en la décodant dans ma deuxième application.

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