什么是最佳/推荐的RESTful方式来处理大型单个Json响应?

时间:2016-03-22 12:06:24

标签: json rest

当我们从响应中返回许多文档时,我们可以对结果进行分页并在响应中提供链接以检索要从API获取的下一组文档。但是我的情况不同,我的回复中的每个文件都可能非常大。我该如何处理此类回复? 例如,考虑以下示例Json:

{
  "excludes": null,
  "endDate": 1422918663,
  "appliedText": "Applied  text",
  "id": "135699543",
...
  "assignedTo": {
    "productPart": [
      {
        "part": "1"
      },
      {
        "part": "2"
      },
      {
        "part": "3"
      },
      {
        "part": "4"
      },
      ...
    ]
  }
...
}

如果你看到这里,productPart可以增长到数万。如何限制如此大的响应但保留结构。

2 个答案:

答案 0 :(得分:0)

使用单独的请求获取产品部件(如果有可能),然后可以对其进行分页。

替代。返回前x个产品部件,然后提供可以获得更多产品部件的链接。

答案 1 :(得分:0)

我相信你应该尝试类似JSON-Streaming的内容。

  

流处理(也称为增量处理)是处理JSON内容的最有效方式。它具有最低的内存和处理开销,并且通常可以匹配Java平台上可用的许多二进制数据格式的性能

这是主要的想法:

try {

    InputStream in    = [..];
    JsonParser parser = new JsonFactory().createParser(in);
    JsonToken token   = null;

    while ((token = parser.nextToken()) == JsonToken.FIELD_NAME) {
       /*
        * Parse parts and store them in client DB
        * use later client side pagination 
        *
        * {
        *    "part": "i"
        * }
        */
    }

 } catch (Exception e) {
    //
 }