【发布时间】:2018-02-05 09:13:31
【问题描述】:
我想为 DTO 定义一个契约,消费 API 项目将实现该契约并以 JSON 形式返回。
在我看来,这里有三个问题:
- 合约定义的属性
- 实现(例如,这可能是实体框架 POCO)
- 定义返回的 JSON 的序列化元数据
我想分别定义这三个部分,但据我所知,我必须在合同的实施中添加序列化装饰(DataMember 属性等)。这意味着实现与 JSON 表示相结合。
是否可以将这个序列化元数据分离到一个单独的类中?
【问题讨论】:
-
如果您使用完整的 .Net(不是 .Net 核心)并使用 Json.NET 进行序列化,您可以使用
MetadataTypeAttribute。但请参阅JSON.NET Serializes Empty JSON 了解实现中的一些限制。 -
谢谢@dbc。我想这正是我想要的。我实际上正在使用 .NET Core,但我看到
MetadataTypeAttribute已被迁移并重命名 - stackoverflow.com/questions/34576921/…。我稍后会试试这个并报告。 -
是的,我已经验证你说的是正确的。似乎唯一的选择是使用下面建议的 AutoMapper。感谢您通过@dbc 提供的见解。
标签: c# json asp.net-web-api serialization asp.net-core