【问题标题】:Convert a list to a JSON Object in erlang (mochijson)将列表转换为 erlang (mochijson) 中的 JSON 对象
【发布时间】:2011-12-23 17:40:41
【问题描述】:

我非常感谢任何帮助。 我想转换这个列表

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

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

谢谢。

【问题讨论】:

    标签: json list erlang


    【解决方案1】:

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

    1. 您可以编写代码来手动处理您自己的 JSON,如果您的需求足够适中,这可能是一个非常轻量级且合适的解决方案。 Erlang 采用这种数据结构并将其转换为 JSON 是非常简单的。

      "[[{\"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}]]
    

    【讨论】:

    • 谢谢。现在你让我思考了。这个数组表示实际上是一个恶意的 JSON 文档吗?在我看来,X 实际上是一个元组的几个文档的表示还是我错了?
    • 我相信 X 是有效的 Json,据我了解它的语法(json.org),Json 可以嵌套
    • json.org 有一个非常清晰的可视化语法版本。但是,Json 对象绝对可以包含 Json 对象,就像 XML 可以包含 XML 一样
    • X 是一个有效的 JSON 字符串。如有疑问,我发现 jsonlint.com 非常方便验证 + 漂亮的打印 JSON 字符串。
    • 您可能应该使用 mochiweb 的 mochijson2 模块,因为它在 erlang 端使用更方便的 json 表示。例如。 json 数组只是 erlang 列表,而不是那些尴尬的 {array, list()} 元组。
    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多