【发布时间】:2014-10-16 18:05:05
【问题描述】:
我在一个域中有三个类
public class ArtistInfo
{
private Guid Id { get; set; }
public string Name { get; set; }
public string DisplayName { get; set; }
public bool IsGroup { get; set; }
public bool IsActive { get; set; }
public string Country { get; set; }
}
public class Artist : ArtistInfo
{
public DateTime Created { get; set; }
public int CreatedById { get; set; }
public DateTime Updated { get; set; }
public int UpdatedById { get; set; }
}
public class Track
{
public string Title { get; set; }
public string DisplayTitle { get; set; }
public int Year { get; set; }
public int Duration { get; set; }
public int? TrackNumber { get; set; }
//[SomeJsonAttribute]
public ArtistInfo Artist { get; set; }
}
从 ASP.NET Web API 我返回一个通用列表(曲目)。无论我尝试过什么,Web API 都会将 Track 的 Artist 属性返回为 Artist 而不是 ArtistInfo。有没有办法在 API 的输出中限制它只使用 ArtistInfo?我不想编写附加的“ViewModels/DTO”来处理这种情况。我可以用 JSON 序列化器的提示来装饰 ArtistInfo 吗?
【问题讨论】:
-
使用的变量名“Artist”与类名“Artist”类似。你确定你没有误解 JSON 字符串吗?
-
尝试在
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;中设置TypeNameHandling = TypeNameHandling.Auto; -
您可能需要使用自定义转换器:stackoverflow.com/q/5872855/497356
标签: c# serialization json.net asp.net-web-api