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

3

假设我有一个类似下面的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,
        }
      }
    ]

我一直在研究,建议使用Jackson流API解析它是最有效的方式。这是在具有有限内存的PaaS上使用,因此我希望将内存使用量保持到最低。

最好的方法是使用Jackson Streaming API解析JSON,并同时构建新的JSON数组,还是简单地删除元素?


规则中要省略哪些字段是动态的吗?您能详细说明使用情况吗? - Deepak Bala
缺少“thumbsdown”是内存优化吗? - user180100
Deepak - 数组中每个JSON对象需要删除的字段都是相同的。 - Simon
RC - 不是的,这只是一个例子。每个JSON对象可能会有很多元素,我希望出于带宽原因删除我不需要的元素。我所说的内存优化是指我想以最有效的方式完成此操作,而不是因为它本身是一种内存优化。 - Simon
为什么不直接将它们从类中移除,然后添加@JsonIgnoreProperties(ignoreUnknown = true)来忽略不存在的字段呢?这对你有用吗? - Saeid Farivar
显示剩余2条评论
1个回答

0

我曾经用XML做过类似的事情。您可以让请求者告诉您要获取哪些字段,并仅发出这些字段。在我的情况下,我无法控制第三方轴XML视图,但是一旦我有了视图,如果它已经存在,当我从中请求东西时,我可以只返回我感兴趣的部分。作为奖励,如果您在获取JSON或XML后正在编组或取消编组真实的Java对象,则不需要构建您不关心的对象图的部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接