Java 如何在不解析整个Json消息的情况下提取Json数组中的最后一项
我当前的Android应用程序使用RealmIO来存储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值是什么 每个项目都类
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
?