Вы можете использовать списки: keydelete (Key, N, TupleList), чтобы вернуть новый список кортежей с некоторыми удаленными кортежами. Таким образом, в понимании списка для каждой записи извлеките списки кортежей (или проплисты) и создайте новую структуру с удаленным ключом:
B = [{struct, lists:keydelete(<<"name">>, 1, Props)} || {struct, Props} <- Struct].
дает:
[{struct,[{<<"id">>,<<"0129">>},
{<<"photo">>,<<"joe.jpg">>}]},
{struct,[{<<"id">>,<<"0759">>},
{<<"photo">>,<<"jane.jpg">>}]},
{struct,[{<<"id">>,<<"0929">>},
{<<"photo">>,<<"john.jpg">>}]}]
и
iolist_to_binary(mochijson2:encode(B)).
дает:
<<"[{\"id\":\"0129\",\"photo\":\"joe.jpg\"},{\"id\":\"0759\",\"photo\":\"jane.jpg\"},{\"id\":\"0929\",\"photo\":\"john.jpg\"}]">>
Кстати, использование функций списков / * списков кортежей намного быстрее, но иногда немного менее удобно, чем функции проплистов / *: http://sergioveiga.com/index.php/2010/05/14/erlang-listskeyfind-vs-proplistsget_value/