serialize - Usando Json.net-serialización personalizada parcial del objeto ac#
newtonsoft.json nuget (3)
Puede usar .Net DataContractJsonSerializer .
Para la serialización personalizada, ver:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.idatacontractsurrogate.aspx
Una ventaja de usar IDataContractSurrogate
(en comparación con simplemente agregar propiedades a su clase para la serialización) es que no tiene que mezclar propiedades reales y propiedades de serialización en la misma clase.
Otra ventaja (en comparación con tener que hacer una serialización personalizada contra un bolso de propiedad, ala KeyValuePairConverter ) es que solo tiene que agregar atributos a las propiedades en sus clases (el tipo real y el tipo sustituto) y puede escribir toda su conversión / serialización personalizada código directamente contra esos tipos. Esto mantiene su código en un nivel superior y permite que el marco se ocupe del mecanismo de transporte exacto.
Estoy usando Newtonsofts ''Json.Net para serializar algunos y una serie de objetos a json. Los objetos tienen un conjunto común de propiedades pero también tienen la propiedad Meta, que es un diccionario
Durante la serialización, deseo que los pares de valores clave se agreguen a mi objeto json como si fueran propiedades de nivel raíz, como esta ...
{
id: 1,
name:''jeff'',
food:''spinch'',
spoon: ''ýes''
}
Así no:
{
id: 1,
name:''jeff'',
meta:{
food:''spinch'',
spoon: ''ýes''
}
}
He cavado a través de JsonSerializerSettings, pero parece que no puedo ver dónde puedo saltar y anular?
Puede hacerlo creando su propio JsonConverter
y luego agregando un atributo a la clase que desea serializar [JsonConverter(typeof(MyConverter))]
Ejemplo aquí - http://www.lostechies.com/blogs/rhouston/archive/2008/02/25/a-custom-converter-for-json-net.aspx
Si su diccionario es una string
al diccionario de object
, puede simplemente usar el atributo [JsonExtensionData]
:
[JsonExtensionData]
public Dictionary<string, object> Meta { get; set; }
Consulte Cómo serializar un diccionario como parte de su objeto principal utilizando Json.Net .