Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不解析整个Json消息的情况下提取Json数组中的最后一项_Java_Json - Fatal编程技术网

Java 如何在不解析整个Json消息的情况下提取Json数组中的最后一项

Java 如何在不解析整个Json消息的情况下提取Json数组中的最后一项,java,json,Java,Json,我当前的Android应用程序使用RealmIO来存储Json数据 我使用以下领域插入 backgroundRealm.createOrUpdateAllFromJson(Data.class, rawJson); 我的原始Json数据是通过RESTAPI检索的 API支持分页,但是我需要传递后续调用,即前一个rawJson中包含的最后一个Id 这些Json数组有25000项。我不想要解析整个25000项数组的成本 是否有任何方法可用于提取最后一个数组项以发现最后一个Id值是什么 每个项目都类

我当前的Android应用程序使用RealmIO来存储Json数据

我使用以下领域插入

backgroundRealm.createOrUpdateAllFromJson(Data.class, rawJson);
我的原始Json数据是通过RESTAPI检索的

API支持分页,但是我需要传递后续调用,即前一个rawJson中包含的最后一个Id

这些Json数组有25000项。我不想要解析整个25000项数组的成本

是否有任何方法可用于提取最后一个数组项以发现最后一个Id值是什么

每个项目都类似于此

{"id":6,"risk":"xxxxxxxxx","active":0,"from":"2016-07-18"}
我有什么选择


它只是rawJson.lastIndexOf(“id”)和substring()?

没有标准方法可以避免解析整个JSON。另一方面,您可以避免将其全部存储在RAM中,并将其提取到节点中。使用流式JSON解析器()并观察所需元素的事件。您收到的最后一个此类事件将包含最后一个ID

另一方面,如果您知道JSON的模式和序列化格式不会改变(例如,您控制它),那么您只需从末尾扫描未解析JSON的文本,并通过计算括号和引号来提取该值。当然,这是一种脆弱的方法,尽管速度非常快。它的脆弱性显然取决于模式:如果您要查找的列表是另一个列表的最后一个元素,那么它比如果它是特定键下的值要健壮得多,并且可以在映射中的任何位置结束


如果你在控制应用程序的其他API方面,考虑重新考虑它,例如从最新到最早的事件,这样你可以在解析的时候查找第一个事件,如果不需要过去,就可以安全地丢弃其余的事件。与这里的类似,类似于

jsonData[jsonData.length-1].id