c# - 将子级转换为父级的 JsonConvert.SerializeObject 仍返回父级属性
问题描述
有点类似的问题,但这里的答案没有意义
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 没有意义,因为我喜欢该过程在所有其他正常情况下正常工作。
解决方案
如果要使用默认序列化程序序列化父类,则需要创建父类:
var myObject = new ParentClass()
{
P1 = "p1"
};
您不能通过将对象转换为父对象来关闭多态性/忽略该对象是子对象。如果人为示例之外的问题的根源是您的设备 X 正在为您提供子对象而您想要父对象,也许看看映射器是否可以为您将您的孩子映射到父母(或者取出仅复制父母上存在的那些属性的无聊样板)..
推荐阅读
- c - 追加节点后双链表崩溃
- ckeditor - Drupal 8 从表格标签中剥离样式属性
- android - Dagger 2.26 字段注入应用程序失败
- python - 收到错误“sqlite3.OperationalError:靠近“)”:语法错误“
- python - 使用 python 库和 Contours Draw 从图像中检测边缘
- c# - Azure 上的 Blazor 应用程序出现错误您无权查看此目录或页面
- java - 如何使用注解在 Mybatis mapper 中使用 sql 变量执行 SQL/PL 块
- wpf - 如何在 WPF MVVM 中单击按钮之前禁用组合框
- unity3d - Unity - 后期处理前景,但保持背景不变
- r - ggplot中两条密度曲线下的填充区域