Zazwyczaj piszę wszystkie części kodu w języku C# i podczas pisania protokołów, które są serializowane Używam FastSerializer, który serializuje/deserializuje klas szybko i wydajnie. Jest także bardzo łatwy w użyciu i dość prosty do wykonania "wersjonowania", tj. Do obsługi różnych wersji serializacji. To, co normalnie używać, wygląda następująco:Jaki jest najlepszy sposób obsługi wersji przy użyciu protokołu JSON?
public override void DeserializeOwnedData(SerializationReader reader, object context)
{
base.DeserializeOwnedData(reader, context);
byte serializeVersion = reader.ReadByte(); // used to keep what version we are using
this.CustomerNumber = reader.ReadString();
this.HomeAddress = reader.ReadString();
this.ZipCode = reader.ReadString();
this.HomeCity = reader.ReadString();
if (serializeVersion > 0)
this.HomeAddressObj = reader.ReadUInt32();
if (serializeVersion > 1)
this.County = reader.ReadString();
if (serializeVersion > 2)
this.Muni = reader.ReadString();
if (serializeVersion > 3)
this._AvailableCustomers = reader.ReadList<uint>();
}
i
public override void SerializeOwnedData(SerializationWriter writer, object context)
{
base.SerializeOwnedData(writer, context);
byte serializeVersion = 4;
writer.Write(serializeVersion);
writer.Write(CustomerNumber);
writer.Write(PopulationRegistryNumber);
writer.Write(HomeAddress);
writer.Write(ZipCode);
writer.Write(HomeCity);
if (CustomerCards == null)
CustomerCards = new List<uint>();
writer.Write(CustomerCards);
writer.Write(HomeAddressObj);
writer.Write(County);
// v 2
writer.Write(Muni);
// v 4
if (_AvailableCustomers == null)
_AvailableCustomers = new List<uint>();
writer.Write(_AvailableCustomers);
}
Więc jego łatwe dodawanie nowych rzeczy, albo zmienić serializacji całkowicie jeśli ktoś zdecyduje się.
Jednak teraz chcę używać JSON z przyczyn nie odpowiednich tutaj =) Obecnie używam DataContractJsonSerializer i jestem teraz szuka sposobu, aby mieć taką samą elastyczność Mam używając FastSerializer powyżej.
Pytanie brzmi; jaki jest najlepszy sposób tworzenia protokołu/serializacji JSON i aby móc szczegółowo serializacji jak powyżej, tak, że nie przerwać serializacji tylko dlatego, że inny komputer nie ma jeszcze zaktualizowane ich wersji?
Piszę w języku C#, ale implementacja powinna być możliwa w dowolnym języku, w przeciwnym razie pomija cały punkt ... – Ted
+1 za dobrą wskazówkę! – Ted