Есть ли в .Net AJAX способ вручную сериализовать объект в строку JSON? - PullRequest
10 голосов
/ 29 августа 2008

Я нашел ScriptingJsonSerializationSection, но я не уверен, как его использовать. Я мог бы написать функцию для преобразования объекта в строку JSON вручную, но, поскольку .Net может делать это на лету с атрибутами <System.Web.Services.WebMethod()> и <System.Web.Script.Services.ScriptMethod()>, поэтому должен быть встроенный способ, который я пропускаю.

PS: используя Asp.Net 2.0 и VB.Net - я поместил это в теги, но я думаю, что люди пропустили это.

Ответы [ 6 ]

10 голосов
/ 29 августа 2008

Это должно сработать

Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)
6 голосов
/ 29 августа 2008

Я думаю, что вы ищете этот класс:

System.ServiceModel.Web.DataContractJsonSerializer

Вот пример от Рика Штрала: DataContractJsonSerializer в .NET 3.5

4 голосов
/ 29 августа 2008

Поскольку класс JavaScriptSerializer технически устарел, я считаю, DataContractJsonSerializer - предпочтительный способ, если вы используете 3.0 +.

3 голосов
/ 29 августа 2008

Что ж, в настоящее время я использую следующие методы расширения для сериализации и десериализации объектов:

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

Я использую это совсем немного - будьте предупреждены, эта реализация немного наивна (то есть, есть некоторые потенциальные проблемы с ней, в зависимости от того, что вы сериализуете и как вы используете это на клиенте, особенно с DateTimes).

2 голосов
/ 29 августа 2008

В сборке System.Web.Extensions версии 3.5.0.0 есть класс JavaScriptSerializer , который должен обрабатывать все, что вам нужно.

1 голос
/ 29 августа 2008

Попробуйте

System.Web.Script.Serialization.JavaScriptSerializer

или Проверьте JSON.org есть целый список библиотек, написанных для того, чтобы делать именно то, что вы хотите.

...