c# – 如何通过引用以前的元素来停止.net JSON序列化?
我使用MVC 4.5的MVC / Web API来提供
JSON服务.
一切正常,直到需要公开具有一定量重复数据的大型JSON结果. 对于那些不确定我的意思的人,如果我有一个书籍列表,其中每个都有完整的作者数据,.net将更改同一作者的第二个版本以引用前一个版本,而不是复制数据.在这些情况下,它使用$X引用,其中X是要引用的项的索引. 虽然我很欣赏它的效率节省,但我们的客户端应用程序无法使用这种格式 解决方法
Json.NET有一个可以做到这一点的设置……它是保存对象引用,这里是
documentation的链接:
我会说,你所经历的,类似于doucmentation中的一个例子 一些摘录(但是,请参阅文档以获取更多详细信息): 我们有两个人的集合.使用一个小技巧:像这样设置PreserveReferencesHandling string json = JsonConvert.SerializeObject( people,Formatting.Indented,new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects }); 我们可以得到这样的结果: [ { "$id": "1","Name": "James","BirthDate": "1983-03-08T00:00Z","LastModified": "2012-03-21T05:40Z" },{ "$ref": "1" } ] 我们所看到的,很可能是您所经历的.所以PreserveReferencesHandling.Objects似乎是你的代码的设置.所以尝试将其显式设置为None,如下所示: new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.None; } 和在文档中一样:
所以这应该是默认设置 另一个有趣的阅读 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |