用Java重新格式化JSON数组的最节省内存的方法



假设我有一个类似于以下的JSON数组:

[
  {
    "title": "This is a title",
    "year": 2013,
    "images": {
      "image": "http://........jpg",
    },
    "ratings": {
      "thumbsup": 1053,
      "thumbsdown": 256
    }
  },
  {
    "title": "This is a title",
    "year": 2013,
    "images": {
      "image": "http://........jpg",
    },
    "ratings": {
      "thumbsup": 1053,
      "thumbsdown": 256
    }
  }
]

所需的输出是一个JSON数组,如下所示:

[
      {
        "title": "This is a title",
        "images": {
          "image": "http://........jpg",
        },
        "ratings": {
          "thumbsup": 1053,
        }
      },
      {
        "title": "This is a title",
        "images": {
          "image": "http://........jpg",
        },
        "ratings": {
          "thumbsup": 1053,
        }
      }
    ]

Ive一直在研究,有人建议最有效的方法是使用Jackson流式API进行解析。这是在内存有限的PaaS上使用的,所以我希望将内存使用率保持在最低限度。

用Jackson Streaming API解析JSON,同时构造一个新的JSON数组,或者简单地以某种方式删除元素,这是最好的方法吗?

我曾经用XML做过类似的事情。您可以让请求者告诉您想要返回哪些字段,并让它只发出这些字段。在我的案例中,我无法控制第三方axis xml视图,但一旦我有了这个视图,当我向它索要东西时,如果它已经存在,我可以只退还我感兴趣的部分。另外,如果你在获得JSON或xml后从JSON中编组或解组真正的java对象,你就不需要构建你不关心的对象图部分。

最新更新