Подтвердить что ты не робот

Преобразование списка в формат json - быстрый и простой способ

Скажем, у меня есть объект MyObject, который выглядит так:

public class MyObject
{
  int ObjectID {get;set;}
  string ObjectString {get;set;}
} 

У меня есть список MyObject, и я хочу преобразовать его в строку json с помощью stringbuilder. Я знаю, как создать JavascriptConverter и создать строку json, передав список и создав конвертер строкой, но в этом конкретном случае я стараюсь избежать накладных расходов и перейти прямо к строке json с циклом foreach в списке например:

StringBuilder JsonString = new StringBuilder();

foreach(MyObject TheObject in ListOfMyObject)
{

}

Я попытался использовать этот метод, добавив с запятыми и кавычками, но он еще не сработал (пока).

Спасибо за ваши предложения.

4b9b3361

Ответ 1

Я сделал что-то вроде использования класса сериализации JavaScript:

using System.Web.Script.Serialization;

и

JavaScriptSerializer jss = new JavaScriptSerializer();

string output = jss.Serialize(ListOfMyObject);
Response.Write(output);
Response.Flush();
Response.End();

Ответ 2

Спустя 3 года опыта я вернулся к этому вопросу и предлагаю написать его вот так:

string output = new JavaScriptSerializer().Serialize(ListOfMyObject);

Одна строка кода.

Ответ 3

Для меня он работал с Newtonsoft.Json:

using Newtonsoft.Json;
// ...
var output = JsonConvert.SerializeObject(ListOfMyObject);

Ответ 5

зачем изобретать колесо? используйте microsoft json serialize или стороннюю библиотеку, такую ​​как json.NET

Ответ 6

Я предпочитаю использовать функцию linq-to-json JSON.NET. Здесь вы можете сериализовать список ваших объектов в json.

List<MyObject> list = new List<MyObject>();

Func<MyObject, JObject> objToJson =
    o => new JObject(
            new JProperty("ObjectId", o.ObjectId), 
            new JProperty("ObjectString", o.ObjectString));

string result = new JObject(new JArray(list.Select(objToJson))).ToString();

Вы полностью контролируете, что будет в строке json результата, и вы ясно видите, что это просто смотрит на код. Разумеется, вы можете избавиться от объявления Func<T1, T2> и указать этот код непосредственно в вызове new JArray(), но с этим кодом, извлеченным в Func<>, он выглядит намного понятнее, что происходит и как вы фактически трансформируете свой объект в json. Вы даже можете хранить Func<> вне этого метода в каком-то способе настройки (т.е. В конструкторе).