Я успешно использовал DataContractJsonSerializer
для сериализации объекта в json.Самое замечательное в этом то, что я могу работать с необязательными полями (которые могут или не могут быть сериализованы).Например,
[DataContract()]
public class aClass
{
[DataMember()]
public int member1;
[DataMember()]
public int member2;
[DataMember(EmitDefaultValue=false)]
public int member3;
}
В этом случае, когда я создаю экземпляр объекта класса aClass
, я могу установить member1 равным 1, а member 2 равным 2, а member3 равным 3. Когда я сериализую его, яполучить соответствующую строку JSON.С другой стороны, если я устанавливаю только member1 и member2, сериализатор игнорирует member3 при генерации строки JSON.Это очень полезно и работает не только в целых числах, но и в списках, объектах и т. Д.
Теперь я не пробовал, но я думаю, что сериализатор будет игнорировать member3 не только тогда, когда он не установлен, но и когдаустановить по умолчанию (в случае int по умолчанию будет 0).Поэтому, пока member3 равен 1, 2 или 3, он сериализуется.Пока что это было желаемое поведение.
Вот моя проблема.
Я хотел бы, чтобы member3 был сериализован, когда установлено значение 0 , или 1, 2, 3. И не сериализовано иначе.(например, когда не установлено)
Возможно ли это вообще?Как этого достичь?