0

我正在创建一个API,我需要将数据模型发送到客户端,以便于处理,所以我也不需要在客户端实现和维护json结构,只需序列化一个新的空对象,并且把它交给客户。

但是我的问题来了,如果导航属性对象为空,它会被序列化为一个空数组

[]

不是数组中的对象。
所以我的问题是,谁能指出我正确的方向,用相关属性序列化对象,比如招摇文档是如何做到的?

MVC 中的基本序列化示例:http: //pastebin.com/ihF2AeKY

使用 nav 道具和类型通过 swagger 进行序列化的示例:http: //pastebin.com/SxxztnDa

现在,我可以实例化 nav 道具,并将其添加到对象中,然后对其进行序列化,但这很笨拙,并且不会像 swagger 示例那样自动跟踪对象的更改。

编辑:

这将是理想的,因为如果我更改基础对象或道具关系,模型将自动跟随,但由于新对象中的属性为空,除非我手动填充它,否则导航道具将为空,或像“[]”这样的空列表,如基本示例中所示,所以我不会得到导航道具“方案”,只是基本对象。Swagger 在这里做了某种魔术,以构建完整的树,如第二个 pastebin 所示。

[Route("getmodel")]
[HttpGet]
public async Task<Company> GetContactCompanyModel(){
            var ret = new Company();

            return ret;
}

这是一种工作,但很笨拙,因为我需要手动插入道具,但这将返回正确的模型,并带有填充但为空的导航道具。

[Route("getmodel")]
[HttpGet]
public async Task<Company> GetContactCompanyModel(){
            var ret = new Company();
            ret.Peoples.Add(new People { Address = new Address(), PrivateContact = new ContactDetails(), WorkContact = new ContactDetails()});
            ret.ServicePlaces.Add(new ServicePlace { ContactDetails = new ContactDetails(), Address = new Address() });

            return ret;
}

这是我手工制作的 new() 样板的输出:http: //pastebin.com/C4W6Tvsg 如您所见,它包含导航属性的空对象,有点像 EF 为我返回它的方式,所以我可以只需将其发送给客户端,并使用 Angular 处理它,即使我向其添加新属性或字段。

所以最后,问题是我如何遍历对象图,并从中创建一个模式,有点像我渴望加载它,但使用空对象。

希望像这样更清楚一点。

4

0 回答 0