Я использую метод ShouldSerialize для условной сериализации поля при использовании XmlSerializer
. Но теперь мне нужно сериализовать тот же класс с использованием JSON, но я бы хотел, чтобы метод ShoulSerialize игнорировался при использовании JSON, могу ли я сделать это каким-либо образом?
[TestClass]
public class UnitTest1
{
private readonly Customer _customer = new Customer
{
FirstName = "Paulo",
LastName = "Balbino",
Age = 25
};
[Serializable]
public class Customer
{
[XmlElement("FirstName")]
public string FirstName { get; set; }
[XmlElement("LastName")]
public string LastName { get; set; }
[XmlElement("Age")]
public int Age { get; set; }
public bool ShouldSerializeLastName()
{
return Age > 30; // Enter here only if it is XmlSerialize.
}
}
[TestMethod]
public void XmlSerialize()
{
try
{
var xmlSerializer = new XmlSerializer(typeof(Customer));
using (var textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, _customer);
Debug.WriteLine(textWriter.ToString());
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
[TestMethod]
public void JsonConvert()
{
try
{
var json = Newtonsoft.Json.JsonConvert.SerializeObject(_customer);
Debug.WriteLine(json);
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
}
}
}
Результат Xml:
<?xml version="1.0" encoding="utf-16"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>Paulo</FirstName>
<Age>25</Age>
</Customer>
Результат Json:
{"FirstName":"Paulo","Age":25}
Оба идут к методу ShouldSerializeLastName()
, однако я бы хотел, чтобы он игнорировался в JSON и отображались все поля.