json - 如何在 Erlang 中手动创建 JSON 字符串

标签 json erlang

我是 Erlang 的新手并注意到没有从列表中创建 json 字符串的 native 函数(或者有吗?)。我使用这种方法在 Erlang 中创建 json 字符串,但不知道它是否会故障

这是我的方法的一个例子:

-module(index).
-export([test/0]).

test() ->
    Ma = "Hello World", Mb = "Hello Erlang",
    A = "{\"Messages\" : [\"" ++ Ma ++ "\", \""++Mb++"\"], \"Usernames\" : [\"Username1\", \"Username2\"]}",
    A.

结果是:

388> test().
"{\"Messages\" : [\"Hello World\", \"Hello Erlang\"], \"Usernames\" : [\"Username1\", \"Username2\"]}"
389> 

我认为这是预期的结果,但是当包含特殊字符时,此方法是否有可能出现故障,例如:<, >, & / \ " ?

我应该采取什么预防措施来使这种方法更强大?

最佳答案

如果MaMb包含双引号或任何控制字符,从字符串到 JSON 的解析将失败。这种解析可能永远不会在 Erlang 中发生,因为 Erlang 没有内置的字符串到 JSON 转换。

使用二进制文件 ( <<"I am a binary string">> ) 是个好主意,因为列表会消耗更多资源。

我们正在使用 jiffy ,实现为 NIF因此速度相当快,它允许像这样构建文档:

jiffy:decode(<<"{\"foo\": \"bar\"}">>).
{[{<<"foo">>,<<"bar">>}]}
Doc = {[{foo, [<<"bing">>, 2.3, true]}]}.
{[{foo,[<<"bing">>,2.3,true]}]}
jiffy:encode(Doc).
<<"{\"foo\":[\"bing\",2.3,true]}">>

关于json - 如何在 Erlang 中手动创建 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597151/

相关文章:

javascript - 从 Angular js 中的复杂 JSON 数组获取值

java - XMPP编程使用erlang还是java?

xml - 使用Erlang xmerl_xpath提取xml文本时出现问题

erlang - Erlang 中的并行深度优先搜索比顺序搜索慢

heroku - 处理 erl_child_setup 中的信号

scala - Akka 的 Actors 与 Erlang 的 Actors 中消息顺序语义的结果

javascript - 轻松从 JSON 填充 HTML 表单

c# - 读取 JSON 文件并映射到 C# 对象

jquery - Python Flask 获取json数据显示

PHP: JSON解码问题