"leftovers"} 并编码为 JSON 映射。 例如,我尝试使用 jiffy 转换列表 (tunnel@127.0.0-6ren">
gpt4 book ai didi

javascript - 使用字符串将 Erlang 映射编码为 JSON 以供 Javascript 解析?

转载 作者:行者123 更新时间:2023-11-29 21:10:41 25 4
gpt4 key购买 nike

我正在尝试像这样使用 Erlang 映射

#{"breakfast" => "leftovers"}

并编码为 JSON 映射。

例如,我尝试使用 jiffy 转换列表

(tunnel@127.0.0.1)27> binary_to_list(jiffy:encode(["alpha", "beta"] )).
"[[97,108,112,104,97],[98,101,116,97]]"

但我不确定如何将其转换为 JSON 对象。

当我尝试转换 map 时,我得到“invalid_member_key

(tunnel@127.0.0.1)28> jiffy:encode(#{"breakfast" => "egg sandwhich"}).
** exception throw: {error,{invalid_object_member_key,"breakfast"}}
in function jiffy:encode/2 (src/jiffy.erl, line 97)

我为列表尝试了漂亮的格式化程序,我得到了换行符

(tunnel@127.0.0.1)31> binary_to_list(jiffy:encode(["alpha", "beta"], [pretty] )).
"[\n [\n 97,\n 108,\n 112,\n 104,\n 97\n ],\n [\n 98,\n 101,\n 116,\n 97\n ]\n]"

为什么这不起作用?一个 json_object 是

-type json_object() :: {[{json_string(),json_value()}]}
| #{json_string() => json_value()}.

所以我希望 map 转换能够正常工作。我尝试搜索并找到了有关读取 JSON 的示例,但没有找到将 Erlang 转换为可读 JSON 的工作示例。

最佳答案

问题在于,在 Erlang 中,字符串 "hello" 只是一个整数列表。将 Erlang 映射编码为 JSON 的库将字符串解释为 JSON 列表,这就是您在输出中获得整数列表的原因。

为了获取 JSON 字符串,您需要使用 Erlang 二进制文件作为映射中的值:

Food = #{<<"breakfast">> => <<"leftovers">>},
jiffy:encode(Food).
%%= <<"{ \"breakfast\" : \"leftovers\" }">>

jiffy 是一致的,因此它还将 JSON 字符串解码为 Erlang 二进制文件,您在使用 jiffy:decode/1 时需要考虑到这一点。

关于javascript - 使用字符串将 Erlang 映射编码为 JSON 以供 Javascript 解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42044491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com