This forum has been archived. Please start a new discussion on GitHub.

In version 3.6 struct Ice.Optional is not backward compatible with previous versions

In version 3.6 the structure Ice.Optional marked attribute [Serializable] and implemented interface ISerializable. Because defined method GetObjectData, now serialization occurs by different rules, not because it was in the previous version - default on public properties. This is nowhere mentioned in the documentation, there is no mention of it in the list of changes in the new version. Perhaps such similar changes also affected other parts of the code. It would be nice if the documentation listed these important changes.


  • mes
    mes California
    Hi Dmitriy,

    Thanks for reporting this. I believe you're referring to the fact that the serialized format of an Ice.Optional value changed in Ice 3.6? Did this affect your application?

  • For example, Otional<int> x = 1;
    in 3.5 json serialized to: {"HasValue": true, "Value": 1}
    in 3.6 json serializied to: {"isSet": true, "value": 1}

    After update Ice to version 3.6 deserialization was failed, because json format changed.