在erlang中将列表转换为JSON对象(mochijson)

时间:2011-12-23 17:40:42

标签: json list erlang

我真的很感激任何帮助。 我想转换此列表

[[{id1,1},{id2,2},{id3,3},{id4,4}],[{id1,5},{id2,6},{id3,7},{id4,8}],[...]]

到JSON对象。 需要一些灵感:) 请帮忙。

谢谢。

1 个答案:

答案 0 :(得分:2)

既然你要求灵感,我可以想象你可以采取的两个方向

  1. 您可以编写代码来手动编写自己的JSON,如果您的需求足够适合,可以是一个非常轻量级和适当的解决方案。获取一个数据结构并将其转换为JSON将是非常简单的Erlang。

    “[[{\” ID1 \ “:1},{\” ID2 \ “:2},{\” ID3 \ “:3},{\” ID4 \“:4}],[{\ “id1 \”:5},{\“id2 \”:6} {\“id3 \”:7},{\“id4 \”:8}]]“

  2. 您可以生成mochiweb的mochijson:encode / 1和decode / 1可以处理的数据结构。我拿了你的清单并用手将其编码为JSON,得到:

    X =“[[{\”id1 \“:1},{\”id2 \“:2},{\”id3 \“:3},{\”id4 \“:4}],[ {\ “ID1 \”:5},{\ “ID2 \”:6},{\ “ID3 \”:7},{\ “ID4 \”:8}]]”

    然后我使用了mochison:decode(X)来查看mochiweb用来表示JSON的结构(懒得查看文档)。

    Y = mochijson:decode(X).
    {array,[{array,[{struct,[{"id1",1}]},
                    {struct,[{"id2",2}]},
                    {struct,[{"id3",3}]},
                    {struct,[{"id4",4}]}]},
            {array,[{struct,[{"id1",5}]},
                    {struct,[{"id2",6}]},
                    {struct,[{"id3",7}]},
                    {struct,[{"id4",8}]}]}]}
    

    因此,如果您可以创建这个稍微更精细的数据结构,那么您可以使用mochijson:encode / 1来获取JSON。这是一个在io:format语句中嵌入的示例,以便将其打印为字符串 - 通常您将使用io_lib:format / X,具体取决于您的应用程序。

    io:format("~s~n",[mochijson:encode(Y)]).
    [[{"id1":1},{"id2":2},{"id3":3},{"id4":4}],[{"id1":5},{"id2":6},{"id3":7},{"id4":8}]]