2016-12-06 88 views
0

如何将元组转换为列表& Atom &将列表中的二进制字符串转换为JSON? 我看到Erlang : Tuple List into JSON ,我发现https://github.com/rustyio/BERT-JS将Erlang Tuple编码为JSON

我希望有一个API我可以打电话给喜欢

erlang_json:convert([{a, b, {{c, d}}, 1}, {"a", "b", {{cat, dog}}, 2}

其中的原子将被转换为字符串或对JavaScript端处理一些其他的标准方式。

我有复杂的Erlang列表需要发送到我的网页。

回答

3

目前还不清楚[{a, b, {{c, d}}, 1}, {"a", "b", {{cat, dog}}, 2}...会变成JSON,但您可以看看jiffyjsx。他们都在简单的键/值结构上工作。例如:

> Term = #{a => b, c => 1, <<"x">> => <<"y">>}. 
#{a => b,c => 1,<<"x">> => <<"y">>} 

> jiffy:encode(Term). 
<<"{\"x\":\"y\",\"c\":1,\"a\":\"b\"}">> 

> jsx:encode(Term). 
<<"{\"a\":\"b\",\"c\":1,\"x\":\"y\"}">> 

如果你可以说JSON你希望你的例子输入变成什么样,我也许可以给你更好的建议。

+0

要添加到此答案请参阅https://github.com/davisp/jiffy#data-format来查看可以给出正确的json的有效的erlang数据类型。 – boring

+0

谢谢 - 我希望每个原子都可以变成一个字符串,因为我不认为JSON中有一种方法可以发送不在字符串中的字符。你的示例代码看起来是正确的,所以我会接受这一点,我将检查jiffy&jsx谢谢! – quantumpotato

+0

但是,[JSON](http://www.json.org/)是由键/值对组成的。如果你把原子转换成字符串,你仍然会在erlang中得到类似于“{”a“,”b“,{{”c“,”d“}},1}”的东西。你想要什么样的键/值对? –

3

只为你 https://github.com/romanr321/t2j

你并不需要将其包装在一个列表中,虽然,它需要一个元组的参数和returnes一个JSON字符串格式化。

>Tuple = {{key, value}, { key2, {key3, [value1, 2,3]}}}. 
>t2j:t2jp(Tuple). 
{"key":"value", "key2, {"key3":["value1", 2,3]}}