2014-07-07 9 views
5

From this answer Ho classe JsonCreationConverter<T> e alcune implementazioni per tipi di calcestruzzo. Ma questa classe astratta manca l'implementazione del metodo WriteJson.JSON.NET: JsonCreationConverter che funziona implementazione WriteJson

Su internet ho trovare il codice:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
{ 
    //use the default serialization - it works fine 
    serializer.Serialize(writer, value); 
} 

Ma questo codice finisce con StackOverflowException come si chiama tutto il tempo (ovviamente). Altre soluzioni erano per implementazioni di oggetti concreti con serializzazione di tutti i valori uno per uno. Voglio davvero evitarlo, voglio solo usare la serializzazione di default, che per me è OK. Giusto per evitare di chiamare il mio JsonConverter per la serializzazione. Ne ho bisogno solo per la deserializzazione. È possibile? Come?

risposta

9

Provare a ignorare il getter di proprietà CanWrite nel convertitore in modo che restituisca false. Ciò impedirà l'utilizzo del convertitore durante la serializzazione.

public override bool CanWrite 
    { 
     get { return false; } 
    } 
+0

Grazie. Mi vergogno abbastanza di non averlo trovato :-). – Zoka

+0

Nessun problema. Sono contento di poterti aiutare. –

+0

Sei un santo. – Dagrooms

Problemi correlati