微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在.NET Web API中设置JSON序列化的最大深度

假设我有这些关系的权利:这只是一个虚构的例子,而不是我现在的实体.

>课程
>用户
> NewsPosts

课程有很多用户,
用户有很多课程

课程有很多NewsPosts,
NewsPosts有很多课程

用户有很多NewsPosts,
NewsPosts有很多用户

我首先使用.NET Web API实现实体框架代码,它以JSON的形式发回实体.当我尝试获取课程时,它会发回一个带有entites关系的JSON结果,这很好,但我希望设置一个限制它序列化的级别,这样它就不会序列化所有关系超出第一个或二级.

GET课程/将序列化为:

{
     "Users":[{
                "id":1,"newsPosts": [{
                                "id":1,"message":"foo"
                             }]
             }],"newsPosts":[{
                 "id":2,"message":"bar"
               }]   

   }

我想要的是仅序列化1个或2个级别,结果将是:

{
     "Users":[{
                "id":1,"newsPosts": []
             }],"message":"bar"
               }]   

   }

添加一个

json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

这是删除referencelooping.

简而言之:有没有办法设置最大数量的节点来序列化?

解决方法

这不仅仅是关于如何构造要从get函数发送的数据的问题吗?

我的意思是JSON序列化程序通过序列化你给他的所有数据来完成它的工作,只是删除数据,或者不包括它,它不会被序列化.

如果它是更精细的调整你正在寻找一个自定义的JsonWriter是你想要的,Alex Filipovici发布的链接提供了如何做到这一点的详细信息.

原文地址:https://www.jb51.cc/html/226810.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐