我有一个控制器,可以将大量JSON数据发送到移动应用。在某些情况下,数据有效负载很大 - 超过10兆字节。我们在应用中遇到了数据限制问题,因此我需要找到一种方法将数据拆分为更小的有效负载。
我们正在使用Json.NET来序列化我们的数据。我现在的解决方案是(一个黑客)检查我们发回的JSONResult的大小;如果它大于阈值,控制器将分页结果。我已经弄清楚如何获得响应的大小,但我还没弄清楚我将如何使用Json.NET将响应拆分为多个有效负载。
我看过Json.NET streamWriter,但看起来好像你必须手动编程(由于反序列化,我已经有了强类型对象)。有没有办法用Json.NET拆分JSON有效负载?
答案 0 :(得分:5)
我建议您将其更改为与网页相同的工作方式...您不会在具有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
属性有网址,然后重复此过程:
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 ...
]
}
我希望有所帮助。分页的字段或工作方式可能会有所不同,但在同步过程中会给您很多控制权。最新数据可以预先加载,其余数据可以在后台运行,同时让应用程序正常运行。
答案 1 :(得分:0)
是否有机会缩短物业名称?在将XML发送到SQL服务器并且SQL服务器内存不足时,我遇到过类似的问题。只使用一个字符作为标记名称有助于将大小缩小80%