[c#] Llamar recursivamente a JsonSerializer en un JsonConverter


Answers

Lo siento, pero tal vez estoy confundido. Usé estos métodos para serializar mis objetos:

using System;
using Newtonsoft.Json;

namespace Utilities
{
    public static class serializer
    {
        public static string SerializeObject(object objectModel) {
            return JsonConvert.SerializeObject(objectModel);
        }
        public static object DeserializeObject<T>(string jsonObject)
        {
            try
            {
                return JsonConvert.DeserializeObject<T>(jsonObject);
            }
            catch (Exception ex) { return null; }
            
        }
    }
}

y usé este código:

userLoged = (modelUser)serializer.DeserializeObject<modelUser>((string)Session["userLoged"]);

Espero que esto haya sido útil.

Question

Estoy escribiendo un JsonConverter para realizar algunas tareas de conversión que necesito realizar en lectura / escritura. En particular, estoy tomando el comportamiento de serialización existente y añadiendo algunas propiedades adicionales en la escritura / lectura de esas propiedades adicionales en lectura.

Dentro de JsonConverter , me gustaría hacer uso de la instancia JsonSerializer aprobada para realizar la mayoría de las funciones de conversión. Sin embargo, cuando hago esto, termino en un bucle recursivo donde el serializador llama a mi convertidor que llama al serializador que llama al convertidor y etc.

He visto a gente hacer cosas como usar JsonConvert.SerializeObject , pasando todos los convertidores de la instancia del serializador excepto this . Sin embargo, eso no funcionará para mí porque evita toda la otra personalización que he hecho en mi serializador, como la resolución de contratos personalizada y el manejo de DateTime .

¿Hay alguna manera que yo pueda:

  1. Use la instancia del serializador que me ha pasado, pero de alguna forma excluye mi convertidor, o
  2. Clonar el serializador que se me pasó (sin construir manualmente uno nuevo y copiarlo propiedad por propiedad) y eliminar mi convertidor?





Links