Преобразовать список в объект JSON в erlang (mochijson) - PullRequest
0 голосов
/ 23 декабря 2011

Я был бы очень признателен за любую помощь. Я хотел бы преобразовать этот список

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

в объект JSON. Нужно немного вдохновения :) пожалуйста, помогите.

Спасибо.

1 Ответ

2 голосов
/ 23 декабря 2011

Поскольку вы просили вдохновения, я могу представить себе два направления, по которым вы можете пойти

  1. Вы можете написать код для подбора роли вашего собственного JSON, который, если ваша потребность достаточно скромна, может быть очень легким и подходящим решением. Было бы довольно просто, Эрланг, взять эту единственную структуру данных и преобразовать ее в JSON.

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

  2. Вы можете создать структуру данных, которую может обрабатывать mochijson mochiweb: 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}]}]}]}

Итак, если вы можете создать эту немного более сложную структуру данных, чем та, которую вы используете, то вы можете получить JSON, используя mochijson: encode / 1. Вот пример, вставленный в оператор 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}]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...