在.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发布的链接提供了如何做到这一点的详细信息.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些