gpt4 book ai didi

c# - Json.NET:以 block 的形式写入来自 Controller 的响应

转载 作者:行者123 更新时间:2023-12-02 21:30:02 24 4
gpt4 key购买 nike

我有一个 Controller ,可以将大量 JSON 数据有效负载发送到移动应用程序。在某些情况下,数据有效负载很大 - 超过 10 兆字节。不过,我们的应用程序遇到了数据限制问题,因此我需要找到一种方法将数据拆分为更小的有效负载。

我们使用 Json.NET 来序列化我们的数据。我现在的解决方案是(一种黑客)检查我们发回的 JSONResult 的大小;如果它大于阈值, Controller 将对结果进行分页。我已经弄清楚如何获取响应的大小,但还没有弄清楚如何使用 Json.NET 将响应拆分为多个有效负载。

我查看了 Json.NET streamWriter,但看起来您必须手动对其进行编程(并且由于反序列化,我已经有了强类型对象)。有没有办法用 Json.NET 拆分 JSON 负载?

最佳答案

我建议您将其更改为与网页相同的工作方式...您不会在网页中显示包含 10Mb 数据的表格,因此这同样适用于此处。因此,我们的想法是在 REST API 中实现分页

因此,第一次数据请求可以以多组页面的形式返回数据,并在有数据时包含指向下一页数据的链接:

GET/api/sync 可能会给出:

{
"count": "10",
"total": "141",
"next": "/api/sync?page=2"
"data": [
{
"id": "101",
"date": "2013-02-14"
},
{
"id": "102",
"date": "2013-02-18"
}
// More data here ...
]
}

您的同步代码可以读取第一页,查看 next 属性有一个 URL,然后重复该过程:

GET/api/sync?page=2 可能会给出:

{
"count": "10",
"total": "141",
"next": "/api/sync?page=3"
"data": [
{
"id": "111",
"date": "2013-02-14"
},
{
"id": "112",
"date": "2013-02-18"
}
// More data here ...
]
}

我希望这会有所帮助。分页的字段或工作方式可能会有所不同,但它在同步过程中为您提供了很多控制权。可以预先加载最新的数据,其余数据可以在后台运行,同时使应用程序保持正常运行。

关于c# - Json.NET:以 block 的形式写入来自 Controller 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22542032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com