防止使用common-lisp YASON库解析JSON节点

我在common-lisp中使用Yason库,我想解析一个json字符串,但希望解析器保持其节点未解析。
通常带有这样的示例:

handletabClick = (event) => {
  this.setState({ activetab: event.target.id });
}

如何设置yason解析器来解析我的json,但是跳过有效负载节点,并将其保留为json格式的字符串。

使用:假设我只想要信封数据(不是有效载荷的所有数据),然后将有效载荷(作为json字符串)转发到另一个系统。

如果我解析整个json(因此包括有效载荷),然后将有效载荷重新编码为json,则效率低下。有效负载大小也可能很大。

eyro77 回答:防止使用common-lisp YASON库解析JSON节点

您如何知道有效负载对象的末尾在流中的位置?您可以通过解析流来实现 :如果不解析流,就根本无法知道对象的结尾在哪里:这就是JSON语法的本质(因为JSON的本质是CL的默认语法)。例如,您唯一的办法就是知道之后继续哪里的区别

{x:1}

及之后

{x:1.2}

是通过解析两件事。

因此,您必须分析整个内容。

所以您的问题的答案是:您不能这样做。


您可以(但我认为不能通过YASON)决定您不希望由于解析而构建对象。也许,如果您要解析的流对应于具有随机访问权限的内容(例如字符串或文件),则可以记下流中的开始和结束位置,以便稍后从流中提取与未解析的数据相对应的字符串(或者您可以随便建立起来。)

CL-JSON似乎可以实现其中的部分或全部功能,但您必须为此而努力。

除非您正在阅读的对象很大,否则这种好处似乎是无可置疑的。如果您确实想高效地执行此类操作,则需要一个序列化方案来告诉您事情有多长时间。

本文链接:https://www.f2er.com/3167869.html

大家都在问