假设我有这两个类Book
public class Book
{
[JsonProperty("author")]
[---> annotation <---]
public Person Author { get; }
[JsonProperty("issueNo")]
public int IssueNumber { get; }
[JsonProperty("released")]
public DateTime ReleaseDate { get; }
// other properties
}
和Person
public class Person
{
public long Id { get; }
public string Name { get; }
public string Country { get; }
// other properties
}
我想将Book
类序列化为 JSON ,但不是将属性Author
序列化为整个Person
类,而只需要Person Name
在JSON中,所以看起来应该是这样的:
{
"author": "Charles Dickens",
"issueNo": 5,
"released": "15.07.2003T00:00:00",
// other properties
}
我知道如何实现这两个选项:
Book
的{{1}}类中定义另一个属性,并仅序列化该属性。AuthorName
,仅指定特定属性。上面的两个选项对我来说都是一个不必要的开销,所以我想问一下如何更简单/更短的方式来指定要序列化的JsonConverter
对象的属性(例如注释)?
提前致谢!
答案 0 :(得分:2)
序列化string
,而不是使用其他属性序列化Person
:
public class Book
{
[JsonIgnore]
public Person Author { get; private set; } // we need setter to deserialize
[JsonProperty("author")]
private string AuthorName // can be private
{
get { return Author?.Name; } // null check
set { Author = new Author { Name = value }; }
}
}