Existe-t-il un moyen intégré dans .Net AJAX pour sérialiser manuellement un objet en chaîne JSON ?
-
09-06-2019 - |
Question
J'ai trouvé ScriptingJsonSerializationSection
mais je ne sais pas comment l'utiliser.Je pourrais écrire une fonction pour convertir manuellement l'objet en chaîne JSON, mais comme .Net peut le faire à la volée avec le <System.Web.Services.WebMethod()>
et <System.Web.Script.Services.ScriptMethod()>
attributs donc il doit y avoir un moyen intégré qui me manque.
PS :en utilisant Asp.Net 2.0 et VB.Net - j'ai mis cela dans les balises mais je pense que les gens l'ont manqué.
La solution
Cela devrait faire l'affaire
Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)
Autres conseils
Je pense que ce que vous recherchez, c'est cette classe :
System.ServiceModel.Web.DataContractJsonSerializer
Voici un exemple de Rick Strahl : DataContractJsonSerializer dans .NET 3.5
Étant donné que la classe JavaScriptSerializer est techniquement obsolète, je crois DataContractJsonSerializer est la solution préférable si vous utilisez la version 3.0+.
Eh bien, j'utilise actuellement les méthodes d'extension suivantes pour sérialiser et désérialiser des 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 pas mal - soyez prévenu, cette implémentation est un peu naïve (c'est-à-direil existe des problèmes potentiels, en fonction de ce que vous sérialisez et de la manière dont vous l'utilisez sur le client, en particulier avec DateTimes).
Dans l'assembly System.Web.Extensions, version 3.5.0.0, il existe un JavaScriptSérialiseur classe qui devrait gérer ce que vous voulez.
Essayer
System.Web.Script.Serialization.JavaScriptSerializer
ou Découvrez JSON.org il existe toute une liste de bibliothèques écrites pour faire exactement ce que vous voulez.