Использование Json.net - частичная пользовательская сериализация объекта С#

Я использую Json.Net Newtonsofts для сериализации некоторых и массива объектов для json. Объекты имеют общий набор свойств, но также имеют свойство Meta, которое является словарем

Во время сериализации я хочу, чтобы пары значений ключа добавлялись к моему объекту json, как если бы они имели свойства уровня корня, как это...

 {
    id: 1,
    name:'jeff',
    food:'spinch',
    spoon: 'ýes'
 }  

Не так:

 {
    id: 1,
    name:'jeff',
    meta:{
       food:'spinch',
       spoon: 'ýes'
    }
 } 

Я вырыл через JsonSerializerSettings, но наклоняю, кажется, обнаруживаю, где я могу прыгать и переопределять???

Ответ 3

Вы можете использовать .Net DataContractJsonSerializer.

Для пользовательской сериализации см.

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.idatacontractsurrogate.aspx

Одним из преимуществ использования IDataContractSurrogate (по сравнению с просто добавлением свойств для вашего класса для сериализации) является то, что вам не нужно смешивать фактические свойства и свойства сериализации вместе в одном классе.

Еще одно преимущество (по сравнению с необходимостью делать пользовательскую сериализацию с мешком свойств ala KeyValuePairConverter) заключается в том, что вам нужно добавлять атрибуты к свойствам на ваших классах (фактический тип и суррогатный тип), и вы можете написать весь код конверсии/пользовательского кода сериализации непосредственно против этих типов. Это держит ваш код на более высоком уровне и позволяет структуре работать с точным механизмом транспорта.