java如何在JSON中仅获取大型数组的第一个元素?
我一直在研究Gson库的流媒体实现。但是,我无法确定按照以下方式获取数组的第一个元素是否是一种好的做法。URL返回一个包含Json数组的InputStream
JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
reader.beginArray();
Message message = new gson().fromJson(reader, Message.class);
reader.endArray(); // this line
reader.close();
我的问题就在旁边有评论的那一行。如果我只想得到第一个元素,我应该这样做吗
注意,这里我想知道代码的效率。代码直接复制自gson流媒体示例[经过一些修改以正确描述情况]
实际阵列非常大。这就是为什么我不能等待得到整个数组,然后再得到元素。因此,我希望在获得第一个元素后立即中断流程,然后关闭流
如果有更好的方法,也请向我推荐
# 1 楼答案
那么,看看代码:)Source for JsonReader
它做的和你期望的差不多。它使用提供的
InputStreamReader
,只读取完成操作所需的内容(在您的例子中,从JSON数组获取第一个对象)然而。。。当你调用
endArray()
。。。它将从流中读取,直到找到该数组的结束]
。你实际上并不关心这个,当然也不想花时间从电线上读取所有数据。只要打电话close()
因为您正在关闭
JsonReader
(以及底层流)。。。这差不多是你能得到的最好的了。您只从底层流中读取所需的数据,然后将其关闭根据评论编辑:您可以通过以下操作使您的案例美观整洁:
当你想使用它时:
或