serializeobject serialize objects newtonsoft net jsonproperty jsonconvert jsonarrayattribute example attribute json.net base-class default-implementation

json.net - objects - newtonsoft json serialize c#



¿Cuál es el JsonConverter predeterminado utilizado en JSON.NET? (1)

No hay ''convertidor por defecto'' en JSON.NET.

Si puede examinar la clase JsonSerializerInternalWriter , observe el método SerializeValue . En él, se encuentra la fase ''buscar y realizar el convertidor'' en la parte superior. Sin embargo, si no hay un convertidor que coincida, recurre a la serialización del tipo de contrato (la declaración de cambio).

No he encontrado una forma (una forma correcta o un truco elegante) para poder realizar una serialización de contrato genérica (por ejemplo, analizar un objeto como de costumbre) con una serialización personalizada ampliada en una entidad (que supongo que está intentando hacer).

Estoy tratando de escribir un JsonConverter personalizado para los casos en los que una persona crea una subclase en una lista o colección, pero luego agrega propiedades adicionales a la subclase (consulte here ). La implementación actual de JSON.NET simplemente cambia la lista en una matriz de objetos secundarios e ignora todas las propiedades agregadas. Así que quiero escribir un nuevo JsonConverter que trate el objeto como si no fuera una lista y simplemente serializar todo lo demás como normal, pero luego agregar una nueva propiedad en la serialización llamada ''_Items'' almacenado

Ahora ya he escrito una clase que hace exactamente esto para nuestra subclase de Lista específica, pero tuve que especificar manualmente todas las propiedades una por una. Pero si pudiera escribir un convertidor que trate esto como un objeto normal y luego manipular manualmente los elementos, sería oro. Ni siquiera me importa si termino duplicando la mitad de otra clase (¡o incluso más!) Pero me encantaría hacer un convertidor reutilizable para estos casos. Sin embargo, como dije, no puedo encontrar el convertidor predeterminado para comenzar.

Entonces ... ¿alguien sabe dónde está?