сериализовать два разных экземпляра в списке на одну строку JSON -- c# поле с участием json поле с участием serialization пол Связанный проблема

serialize two different instances in a list to a single json string


5
vote

проблема

русский

У меня есть два типа классов:

 <код> public class HolidayClass {     public int ID { get; set; }     public string Name { get; set; }     public DateTime StartDate { get; set; }     public DateTime EndDate { get; set; }     public bool Active { get; set; }      public HolidayClass(int ID, string Name, DateTime StartDate, DateTime EndDate, bool Active)     {         this.ID = ID;         this.Name = Name;         this.StartDate = StartDate;         this.EndDate = EndDate;         this.Active = Active;     }      public HolidayClass()     {     } }  public class ProjectClass {     public int ID { get; set; }     public string NetsisID { get; set; }     public string Name { get; set; }     public string Address { get; set; }     public bool Active { get; set; }      public ProjectClass(int ID, string NetsisID, string Name, string Address, bool Active)     {         this.ID = ID;         this.NetsisID = NetsisID;         this.Name = Name;         this.Address = Address;         this.Active = Active;     }     public ProjectClass()     {     } }   

, а потом у меня есть два элемента списка.

 <код> List<ProjectClass> pc; List<HolidayClass> hc;   

Я могу сериализировать один список:

 <код> myJson = new JavaScriptSerializer().Serialize(pc).ToString();   

или

 <код> myJson = new JavaScriptSerializer().Serialize(hc).ToString();   

Я хочу сериализовать эти два списка в одной строке JSON. Как я могу сделать это?

Английский оригинал

I have two types of classes:

public class HolidayClass {     public int ID { get; set; }     public string Name { get; set; }     public DateTime StartDate { get; set; }     public DateTime EndDate { get; set; }     public bool Active { get; set; }      public HolidayClass(int ID, string Name, DateTime StartDate, DateTime EndDate, bool Active)     {         this.ID = ID;         this.Name = Name;         this.StartDate = StartDate;         this.EndDate = EndDate;         this.Active = Active;     }      public HolidayClass()     {     } }  public class ProjectClass {     public int ID { get; set; }     public string NetsisID { get; set; }     public string Name { get; set; }     public string Address { get; set; }     public bool Active { get; set; }      public ProjectClass(int ID, string NetsisID, string Name, string Address, bool Active)     {         this.ID = ID;         this.NetsisID = NetsisID;         this.Name = Name;         this.Address = Address;         this.Active = Active;     }     public ProjectClass()     {     } } 

and then I have two list items.

List<ProjectClass> pc; List<HolidayClass> hc; 

I can serialize a single list with:

myJson = new JavaScriptSerializer().Serialize(pc).ToString(); 

or

myJson = new JavaScriptSerializer().Serialize(hc).ToString(); 

I want to serialize these two lists in a single json string. How can ı do this?

</div
        

Список ответов

6
 
vote
vote
Лучший ответ
 

Самая разумная вещь, которую нужно сделать, это создать новый тип для сериализации или использования анонимного типа:

 <код> Class6  
 

Most sensible thing to do is to create a new type for serialization or using an anonymous type:

var objects = new { HolidayClasses = hc, ProjectClasses = pc }; string result = new JavaScriptSerializer().Serialize(objects); 
</div
 
 
   
   
0
 
vote

Вам придется либо создать класс, который содержит оба списка, а затем создать класс и сериализовать его. Или вы можете добавить два списка словарь и сериализовать это так:

 <код> Class7  
 

You will have to either create a class that contains both lists and then instantiate the class and serialize it. Or you can add the two lists to a dictionary and serialize it like this:

Dictionary<string, List<object>> sample = new Dictionary<string, List<object>>() { { "pc", pc }, { "hc", hc } }; myJson = new JavaScriptSerializer().Serialize(sample).ToString(); 
</div
 
 

Связанный проблема

3  C # PropertiveGrid Drag Drop  ( C sharp propertygrid drag drop ) 
Я пытаюсь реализовать поддержку перетаскивания / падения на свойств в C # с использованием VS2005 (.NET 2.0). Собственность могут обрабатывать драгерацию и т....

0  Соединение не было закрыто. Текущее состояние соединения открыто  ( Connection was not closed connections current state is open ) 
Это дает сообщение об ошибках не было закрыто. Текущее состояние соединения открыто. Пожалуйста, помогите с кодом. <код> private void comboBox1_SelectedIn...

-1  Право оправдании десятичного массива в C #?  ( Right justifying decimal array in c ) 
У меня есть проект для моего класса программирования C #; Написание программы, которая может прочитать файл работника и файл продаж и обрабатывать два. Я зако...

4  Трудно запустить параллельные вставки на SQLite базу данных в C #  ( Difficulty running concurrent inserts on sqlite database in c sharp ) 
Я запускаю ряд потоков, которые каждая попытка выполнить вставки в одну базу данных SQLite. Каждый поток создает собственную связь с БД. Каждый из них создает...

0  Сообщение об ошибке Wile пытается открыть файл .xls  ( Error message wile trying to open xls file ) 
Я создаю файл Excel на лету для отправки его вложение в электронном письме. Соответствующий фрагмент кода приведен ниже (это консольное приложение) <код> pu...

0  Тест подразделения для класса банка в C #  ( Unit test for bank class in c sharp ) 
Я учусь создавать модульные тесты для проекта, написанного в C #. Я был следовать примеру на веб-сайте MSDN, и теперь я только что застрял на том, как создать...

2  Несколько клиентских проектов на один серверный проект W / Silverlight & Ria Services Beta  ( Multiple client projects to one server project w silverlight ria services bet ) 
Тип или имя пространства имен «Ресурсы» не существует в «MyWebProject.Web» (Вы пропустите сборку Ссылка?) C: users ... mysecondproject generated_...

0  Анимация спрайты в XNE после мыши  ( Sprite animation in xna following the mouse ) 
Моя старая проблема заключалась в том, что мой код изначально следит за мышью, но когда она достигла мыши, она исчезла, и в конечном итоге исчезла. Моя теку...

1  Получение релевантности упорядоченный результат из текстового запроса на коллекции MongoDB с использованием драйвера C #  ( Retrieve relevance ordered result from text query on mongodb collection using th ) 
Я пытаюсь отправить текстовые запросы коллекции и получить результаты в текстовом порядке. документы объяснить довольно хорошо, как это сделать в оболочке: ...

1  Есть ли способ генерировать GUID из списка руководств?  ( Is there a way to generate a guid from a list of guids ) 
У меня есть список объектов, которые они имеют GUID для IDS. Я хочу использовать идентификаторы в этом списке объектов для создания GUID, который я могу испол...

0  Не читайте текстовые данные на таблицу SQL в C #  ( Not reading text data to sql table in c sharp ) 
Поэтому я следовал большему количеству помощи, которую я мог найти здесь. Я создал программу C #, которая читает из текстового файла и вставляет в таблицу баз...

1  Узор сопоставления Regex внутри шаблона упаковки  ( Regex match pattern inside a wrapping pattern ) 
Я хочу сопоставить все номера телефонов, которые обернуты между & lt; и & gt; & gt; Теги. Это регулярное выражение для телефонов: <код> 0[2349]{1}-[1-9]{1}...

0  Как загрузить каталог на FTP, используя ftplib?  ( How to upload directory to ftp using ftplib ) 
У меня проблемы с загрузкой Все файлы на FTP: я использую ftplib . У меня есть функция для загрузки: <код> Proj executable not found. Please set PROJ_DIR v...

0  1002 Ошибка API Вызов PayPal Sandbox  ( 1002 error api call paypal sandbox ) 
Я создал учетную запись PayPal Sandbox, и создал пользователь, и у меня есть все учетные данные, осмотр этого правильных учетных данных, которые он несколько ...

5  Использование Litjson в Unity3D  ( Using litjson in unity3d ) 
2 вопроса. 1) Можно ли использовать библиотеку Litjson AS так же, как и сценарии в JavaScript? Это действительно общий вопрос о том, чтобы иметь возможность...

Связанный проблема

3  C # PropertiveGrid Drag Drop 
0  Соединение не было закрыто. Текущее состояние соединения открыто 
-1  Право оправдании десятичного массива в C #? 
4  Трудно запустить параллельные вставки на SQLite базу данных в C # 
0  Сообщение об ошибке Wile пытается открыть файл .xls 
0  Тест подразделения для класса банка в C # 
2  Несколько клиентских проектов на один серверный проект W / Silverlight & Ria Services Beta 
0  Анимация спрайты в XNE после мыши 
1  Получение релевантности упорядоченный результат из текстового запроса на коллекции MongoDB с использованием драйвера C # 
1  Есть ли способ генерировать GUID из списка руководств? 
0  Не читайте текстовые данные на таблицу SQL в C # 
1  Узор сопоставления Regex внутри шаблона упаковки 
0  Как загрузить каталог на FTP, используя ftplib? 
0  1002 Ошибка API Вызов PayPal Sandbox 
5  Использование Litjson в Unity3D