序列化c#对象集合,如何获取引用对象的某些属性?

serialization c# object collection, how to get just certain property of references object?

这是 class:

 public class Category
 {
     public guid id,
     public string name,
     public Category Parent            
 }

我正在使用Json.net序列化它的一个集合,但我不想序列化父对象,只需要id: 我期待什么:

 [
  {'name':'cate1','id':1000,'parent':999}
  {'name':'cate2','id':1001,'parent':998}
 ]

我已经阅读了有关 Serialization Attributes 但没有找到解决方案的信息。

最简单的方法是为父 id 添加一个 get-only 属性(私有或 public,根据您的喜好),然后序列化它,忽略实际的 Parent 属性:

public class Category
{
    public int id;

    public string name;

    [JsonIgnore]
    public Category Parent;

    [JsonProperty("parent", NullValueHandling = NullValueHandling.Ignore)]
    int? ParentId { get { return Parent == null ? (int?)null : Parent.id; } }
}