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

前端之家收集整理的这篇文章主要介绍了在.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发布的链接提供了如何做到这一点的详细信息.

猜你在找的HTML相关文章