У меня есть веб-приложение Erlang, основанное на Mochiweb и Mnesia, которое использует и испускает JSON. Имеет смысл хранить записи в Mnesia; однако Mochiweb / Mochijson требуют данные в формате проплиста. Таким образом, я получаю большое количество шаблонного кода:
-record(foobar, {name, value}).
record_to_proplist(Record)->
[{name, Record#foobar.name},
{value, Record#foobar.value}].
proplist_to_record(Props)->
#foobar{name=proplists:get_value("name", Props),
value=proplists:get_value("value", Props)}.
Прекрасно с одной маленькой записью, боль с большим количеством больших записей. Кто-нибудь может предложить способ обойти весь этот шаблонный код? Я думаю, мне нужен какой-то способ динамического осмотра полей записи; и так как записи являются конструкцией во время компиляции, я предполагаю [предполагая, что это возможно], это означает внедрение кода с помощью макроса.
Спасибо!