erlang中json解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了erlang中json解析相关的知识,希望对你有一定的参考价值。

参考技术A 最近要用erlang写一个接口,功能是银行卡信息验证,这个要接入,第三方的服务提供者,他们的接口要求采用http post请求,请求body要求是标准的json的格式,在github上有个用erlang写的开源应用 jsx 可以满足我需求,用起来很方便,现在总结一下它的基本应用:

注意:map和proplit转化为json时,其中的元素应为二进制的表示形式

运行带有多个 Erlang 进程的 Java XML 解析器

【中文标题】运行带有多个 Erlang 进程的 Java XML 解析器【英文标题】:Run Java XML parser with number of Erlang processes 【发布时间】:2020-11-26 11:46:54 【问题描述】:

我在并发和分布式编程课程中有一个项目。

在本课程中,我们使用 Erlang。

我需要使用 XML 文件中的一些数据库,该文件已经有一个用 java 编写的解析器(这是 XML 和解析器的链接:https://dblp.org/faq/1474681.html)。 XML 文件是 2.5GB,所以我知道第一步是使用一些我将在 erlang 中创建的进程来解析 XML,每个进程都会解析一段 XML。

问题是这是我第一次做这样的事情(结合 erlang 和 java,并解析一个非常大的 XML 文件),所以我不确定如何解决这个问题 - 将 XML 划分为在我开始解析他之前的块?以某种方式为每个解析 XML 的进程设置开始和结束?

澄清一下——本课程是关于 erlang 和在 erlang 中使用进程的,所以我必须使用它(因为我确信有 java 多线程解决方案)。

我将非常感谢任何想法或帮助! 谢谢!

【问题讨论】:

【参考方案1】:

你可以在 Erlang 中做到这一点,而无需使用 Java。您不需要在处理之前完全读取文件。您应该使用支持 XML 流 API 的 XML 解析器。我建议使用太快的fast_xml(它使用 C 函数来解析 XML)。 初始化流解析器状态后,在循环(递归函数)中,您应该逐块读取文件块(例如每个块 1024 字节)并将每个块提供给解析器。如果解析器找到新的 XML 元素,它将以 erlang 消息的形式将它们发送到您的回调进程。在您的回调进程中,您可以生成更多进程来处理每个 XML 元素。

【讨论】:

您好,非常感谢您的回答,我一定会勾选这个选项!我想使用他们在这个网站上的Java解析器的原因是他们也有很多从这个XML文件中提取信息的函数(在解析之后),所以我认为使用它可能会更好,然后我可以使用所有这些功能,而不是自己做所有事情。我将阅读有关 fast_xml 的信息,但是如果您对与 Java 解析器和函数的这种连接有任何想法,那就太好了。谢谢!! 你见过erlang.org/doc/apps/jinterface/jinterface_users_guide.html吗? 是的,我看到了,我已经写了一个示例代码并设法在 Erlang 和 Java 之间进行连接,这个链接主要是关于它的。我要问的问题更具体一些(因为它与我需要解析的这个 XML 文件有关)以及更多关于如何解决这个问题的信息。正如我所说,我有一门关于 java 编程的课程,还有一门关于 erlang 编程的课程,但这是我第一次将它们结合起来,也是我第一次需要使用 XML 文件。所以我对这类问题没有经验。

以上是关于erlang中json解析的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP中解析json

为啥在解析json中汉字解析不了

如何将这个json进行解析?

c#中怎么解析多层json数据

Flutter -- JSON解析

如何在PHP中解析json