11 votes

Existe-t-il un moyen intégré à .Net AJAX pour sérialiser manuellement un objet en une chaîne JSON ?

J'ai trouvé ScriptingJsonSerializationSection mais je ne sais pas comment l'utiliser. Je pourrais écrire une fonction pour convertir manuellement l'objet en une chaîne JSON, mais comme .Net peut le faire à la volée avec la fonction <System.Web.Services.WebMethod()> et <System.Web.Script.Services.ScriptMethod()> Il doit donc y avoir un moyen intégré que je ne connais pas.

PS : j'utilise Asp.Net 2.0 et VB.Net - j'ai mis ce point dans les balises mais je pense que les gens l'ont manqué.

11voto

TonyB Points 2482

Cela devrait faire l'affaire

Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)

6voto

Joseph Kingry Points 4594

Je pense que ce que tu cherches est cette classe :

System.ServiceModel.Web.DataContractJsonSerializer

Voici un exemple de Rick Strahl : DataContractJsonSerializer dans .NET 3.5

4voto

Dave Ward Points 36006

Puisque la classe JavaScriptSerializer est techniquement dépréciée, je crois que DataContractJsonSerializer est la meilleure solution si vous utilisez la version 3.0+.

3voto

Jason Bunting Points 27534

J'utilise actuellement les méthodes d'extension suivantes pour sérialiser et désérialiser les objets :

using System.Web.Script.Serialization;

public static string ToJSON(this object objectToSerialize)
{
  JavaScriptSerializer jss = new JavaScriptSerializer();
  return jss.Serialize(objectToSerialize);
}

/// <typeparam name="T">The type we are deserializing the JSON to.</typeparam>
public static T FromJSON<T>(this string json)
{
  JavaScriptSerializer jss = new JavaScriptSerializer();
  return jss.Deserialize<T>(json);
}

Je l'utilise assez souvent - soyez prévenu, cette implémentation est un peu naïve (c'est-à-dire qu'elle peut poser quelques problèmes, en fonction de ce que vous sérialisez et de la façon dont vous l'utilisez sur le client, notamment avec les DateTimes).

2voto

Jarrod Dixon Points 9201

Dans l'assemblage System.Web.Extensions, version 3.5.0.0, il y a une fonction JavaScriptSerializer qui devrait gérer ce que vous voulez.

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