Existe uma maneira integrada no .Net AJAX para serializar manualmente um objeto em uma string JSON?
-
09-06-2019 - |
Pergunta
encontrei ScriptingJsonSerializationSection
mas não tenho certeza de como usá-lo.Eu poderia escrever uma função para converter o objeto em uma string JSON manualmente, mas como o .Net pode fazer isso rapidamente com o <System.Web.Services.WebMethod()>
e <System.Web.Script.Services.ScriptMethod()>
atributos, então deve haver uma maneira integrada que estou perdendo.
PS:usando Asp.Net 2.0 e VB.Net - coloquei isso nas tags mas acho que as pessoas perderam.
Solução
Isso deve funcionar
Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)
Outras dicas
Acho que o que você está procurando é esta classe:
System.ServiceModel.Web.DataContractJsonSerializer
Aqui está um exemplo de Rick Strahl: DataContractJsonSerializer em .NET 3.5
Como a classe JavaScriptSerializer está tecnicamente obsoleta, acredito DataContractJsonSerializer é o caminho preferível se você estiver usando 3.0+.
Bem, atualmente estou usando os seguintes métodos de extensão para serializar e desserializar objetos:
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);
}
Eu uso isso bastante - esteja avisado, esta implementação é um pouco ingênua (ou seja,existem alguns problemas potenciais com ele, dependendo do que você está serializando e como você o usa no cliente, especialmente com DateTimes).
No assembly System.Web.Extensions, versão 3.5.0.0, há um JavaScriptSerializador classe que deve lidar com o que você deseja.
Tentar
System.Web.Script.Serialization.JavaScriptSerializer
ou Confira JSON.org existe uma lista completa de bibliotecas escritas para fazer exatamente o que você deseja.