Esiste un modo integrato in .Net AJAX per serializzare manualmente un oggetto su una stringa JSON?
-
09-06-2019 - |
Domanda
ho trovato ScriptingJsonSerializationSection
ma non sono sicuro di come usarlo.Potrei scrivere manualmente una funzione per convertire manualmente l'oggetto in una stringa JSON, ma poiché .Net può farlo al volo con il <System.Web.Services.WebMethod()>
E <System.Web.Script.Services.ScriptMethod()>
attributi quindi deve esserci un modo integrato che mi manca.
PS:utilizzando Asp.Net 2.0 e VB.Net: l'ho inserito nei tag ma penso che la gente lo abbia mancato.
Soluzione
Questo dovrebbe bastare
Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)
Altri suggerimenti
Penso che quello che stai cercando sia questo corso:
System.ServiceModel.Web.DataContractJsonSerializer
Ecco un esempio di Rick Strahl: DataContractJsonSerializer in .NET 3,5
Poiché la classe JavaScriptSerializer è tecnicamente deprecata, credo DataContractJsonSerializer è la soluzione preferibile se si utilizza la versione 3.0+.
Bene, attualmente sto utilizzando i seguenti metodi di estensione per serializzare e deserializzare oggetti:
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);
}
Lo uso parecchio: attenzione, questa implementazione è un po' ingenua (ad es.ci sono alcuni potenziali problemi con esso, a seconda di cosa stai serializzando e di come lo usi sul client, in particolare con DateTimes).
Nell'assembly System.Web.Extensions, versione 3.5.0.0, è presente un JavaScriptSerializer classe che dovrebbe gestire ciò che desideri.
Tentativo
System.Web.Script.Serialization.JavaScriptSerializer
o Controlla JSON.org c'è un intero elenco di librerie scritte per fare esattamente quello che vuoi.