Utilizzo il serializzatore JSON di Newtonsoft e la stringa serializzata manca delle proprietà dalla classe derivata se la classe è derivata da un elenco. Ecco il mio codice di esempio.Proprietà di serializzazione JSON mancanti nella classe derivata
Classi:
[DataContract]
public class TestItem
{
[DataMember]
public int itemInt;
[DataMember]
public string itemString;
public TestItem() {}
public TestItem(int _intVal, string _stringVal)
{
itemInt = _intVal;
itemString = _stringVal;
}
}
[DataContract]
public class TestMain : List<TestItem>
{
[DataMember]
public int mainInt;
[DataMember]
public string mainString;
}
codice di serializzazione:
string test;
// Test classes
TestMain main = new TestMain();
main.mainInt = 123;
main.mainString = "Hello";
main.Add(new TestItem(1, "First"));
test = Newtonsoft.Json.JsonConvert.SerializeObject(main);
Dopo la serializzazione, il valore di test è:
[{\ "itemInt \": 1, \" itemString \ ": \" Prima \ "}]
I valori per mainInt e mainString mancano del tutto.
Il comportamento non viene modificato dai tag [DataContract] e [DataMember], ma li ho inseriti li, per evitare la risposta che mancano.
Come posso ottenere JSON per riconoscere e serializzare le proprietà mainInt e mainString della classe derivata?
Buona idea, ma ancora non funziona. Una volta taggato TestMain come JsonObject, vengono fatti mainInt e mainString, ma gli elementi dell'elenco non lo fanno! – user1961169
Avere l'elenco come proprietà di TestMain sarebbe una soluzione (JSON funziona correttamente con questo), ma sfortunatamente ciò inciderà su altri codici su cui non abbiamo alcun controllo: c'è codice di terze parti che usa queste classi così come sono, derivate da una lista <>. – user1961169