Existe uma maneira integrada no .Net AJAX para serializar manualmente um objeto em uma string JSON?

StackOverflow https://stackoverflow.com/questions/35106

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top