【问题标题】:Serialising class hierachy in Newtonsoft Json在 Newtonsoft Json 中序列化类层次结构
【发布时间】:2012-01-25 06:08:00
【问题描述】:

我正在尝试使用 C# 序列化 Newtonsoft Json 中的类层次结构。

我的班级结构是这样的:

public abstract class Foo
{
    public string PropertyOne{get;set;}
}

public class Bar : Foo
{
    public string PropertyTwo{get; set;}
}

当我序列化我的 Bar 类时,我只有 Foo 类的 PropertyOne 属性,而不是 Bar 类的 PropertyTwo。抽象基类的属性对于我们的大多数消息来说都是通用的,因此具有层次结构感觉就像是最佳实践选项。

有谁知道如何在不删除层次结构的情况下让序列化包含来自基类和子类的所有属性?

【问题讨论】:

    标签: c# json abstract-class json.net


    【解决方案1】:

    JsonConvert.SerializeObject 似乎对我有用

    string json = JsonConvert.SerializeObject(new Bar{ PropertyOne = "hello", PropertyTwo = "world" });
    

    输出:

    {"PropertyTwo":"world","PropertyOne":"hello"}
    

    【讨论】:

      【解决方案2】:

      我遇到了这个问题,因为我的主类有 DataContract 序列化 (DataMember) 而我的父类没有。

      作为一个愚蠢错误的提示者发布:-)

      【讨论】:

      • 我在基类中添加了一个DataContract 属性以防止成员序列化,但是所有派生类型都需要DataMember 属性才能在JSON 中序列化。 XML 序列化在没有 DataMember 属性的情况下工作。
      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多