【发布时间】:2021-11-14 03:22:18
【问题描述】:
有点类似的问题,但答案没有意义here
public static void Main(string[] args)
{
var myObject = new ChildClass()
{
P1 = "p1",
P2 = "P2",
};
var data = (ParentClass)myObject;
var jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(data);
Console.WriteLine(jsonData);
}
class ParentClass
{
public string P1 { get; set; }
}
class ChildClass : ParentClass
{
public string P3 { get; set; }
}
会回来
{"P2":"P2","P1":"p1"}
在基类或子类上使用 JsonIgnore 没有意义,因为我喜欢该过程在所有其他正常情况下正常工作。
【问题讨论】:
-
Json.NET 序列化传入的对象的实际属性,而不是引用的声明属性。要将序列化/反序列化为基类对象,您需要使用自定义合同解析器。参见例如How to exclude properties from JsonConvert.PopulateObject that don't exist in some base type or interface? 或 Using JSON.net, how do I prevent serializing properties of a derived class, when used in a base class context?.
-
这些问题是否充分回答了您的问题?还是您需要更具体的帮助?
-
有效但不是很直观,我可能会使用克隆作为反对演员!