Gibt es in .Net AJAX eine integrierte Möglichkeit, ein Objekt manuell in eine JSON-Zeichenfolge zu serialisieren?

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

Frage

Ich habe gefunden ScriptingJsonSerializationSection aber ich bin mir nicht sicher, wie ich es verwenden soll.Ich könnte eine Funktion schreiben, um das Objekt manuell in einen JSON-String zu konvertieren, aber da .Net dies im laufenden Betrieb mit dem tun kann <System.Web.Services.WebMethod()> Und <System.Web.Script.Services.ScriptMethod()> Attribute, also muss es eine integrierte Möglichkeit geben, die mir fehlt.

PS:Verwendung von Asp.Net 2.0 und VB.Net – ich habe dies in die Tags eingefügt, aber ich glaube, die Leute haben es übersehen.

War es hilfreich?

Lösung

Das sollte den Zweck erfüllen

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

Andere Tipps

Ich denke, was Sie suchen, ist diese Klasse:

System.ServiceModel.Web.DataContractJsonSerializer

Hier ist ein Beispiel von Rick Strahl: DataContractJsonSerializer in .NET 3.5

Da die Klasse JavaScriptSerializer technisch gesehen veraltet ist, glaube ich DataContractJsonSerializer ist die bevorzugte Vorgehensweise, wenn Sie 3.0+ verwenden.

Nun, ich verwende derzeit die folgenden Erweiterungsmethoden zum Serialisieren und Deserialisieren von Objekten:

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);
}

Ich benutze das ziemlich oft – seien Sie gewarnt, diese Implementierung ist etwas naiv (d. h.es gibt einige potenzielle Probleme damit, je nachdem, was Sie serialisieren und wie Sie es auf dem Client verwenden, insbesondere mit DateTimes).

In der System.Web.Extensions-Assembly, Version 3.5.0.0, gibt es eine JavaScriptSerializer Klasse, die mit dem umgehen sollte, was Sie wollen.

Versuchen

System.Web.Script.Serialization.JavaScriptSerializer

oder Auschecken JSON.org Es gibt eine ganze Liste von Bibliotheken, die genau das tun, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top