Tengo una aplicación web Erlang, basada en Mochiweb y Mnesia, que consume y emite JSON. Tiene sentido almacenar registros en Mnesia; sin embargo, Mochiweb/Mochijson requiere datos en formato proplist. Así que termino con una gran cantidad de código repetitivo:Conversión de registros a listas (y viceversa)
-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)}.
fino con un solo registro pequeña, un dolor con una gran cantidad de registros de gran tamaño. ¿Alguien puede sugerir una forma de evitar todo este código repetitivo? Supongo que necesito una forma de inspeccionar los campos de un registro de forma dinámica; y dado que los registros son una construcción en tiempo de compilación, supongo que (suponiendo que sea posible) esto significa inyectar código a través de una macro ...
¡Gracias!
Juntando con la otra respuesta de DanialLuna: lists: zip (liga2:' # info - '(Rec), tl (tuple_to_list (Rec))). – f3r3nc
El enlace está muerto. Ponga la respuesta completa en línea en el futuro. – drozzy