2008-08-29 8 views
10

He encontrado ScriptingJsonSerializationSection pero no estoy seguro de cómo usarlo. Podría escribir una función para convertir el objeto a una cadena JSON manualmente, pero dado que .Net puede hacerlo sobre la marcha con los atributos <System.Web.Services.WebMethod()> y <System.Web.Script.Services.ScriptMethod()>, debe haber una forma integrada que me falta.¿Hay un camino integrado en .Net AJAX para serializar manualmente un objeto a una cadena JSON?

PD: usando Asp.Net 2.0 y VB.Net - Puse esto en las etiquetas, pero creo que la gente se lo perdió.

+0

"usando Asp.Net 2.0 y VB.Net - Puse esto en las etiquetas pero creo que la gente lo perdió" - bueno, ese "2.0" podría interpretarse como "no 1.1" en lugar de "no 3.x" . – bzlm

Respuesta

10

Esto debería hacer el truco

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

Nota: en .NET 3.5 JavaScriptSerializer está marcado como obsoleto, dice usar DataContractJsonSerializer –

+0

Correcto, pero esto es para un proyecto de .Net 2.0 – travis

+3

En .NET 3.5 SP1, ¡no es obsoleto otra vez! – bzlm

5

creo que lo que estás buscando es esta clase:

System.ServiceModel.Web.DataContractJsonSerializer

He aquí un ejemplo de Rick Strahl: DataContractJsonSerializer in .NET 3.5

+0

¡Sí! No tienes idea de cuánto tiempo he estado buscando esto :) – Tom

3

En el ensamblado System.Web.Extensions, versión 3.5.0.0, hay una clase JavaScriptSerializer que debe manejar lo que quieras .

1

Trate

System.Web.Script.Serialization.JavaScriptSerializer 

o echa un vistazo JSON.org hay toda una lista de bibliotecas escritas para hacer exactamente lo que quiere.

4

Dado que la clase JavaScriptSerializer está técnicamente en desuso, creo que DataContractJsonSerializer es la mejor opción si usa 3.0+.

+1

En .NET 3.5 SP1, ¡vuelve a ser inocultable! – bzlm

3

Bueno, actualmente estoy usando los siguientes métodos de extensión para serializar y deserializar 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); 
} 

Yo uso esta un poco - estás advertido, esta implementación es un poco ingenuo (es decir, hay algunos problemas potenciales con él, dependiendo de lo que está serializando y cómo lo usa en el cliente, particularmente con DateTimes).

Cuestiones relacionadas