Erlang:如何在元组中找到子元组

时间:2013-12-17 08:42:31

标签: search erlang key-value

我使用jsonerl解码我的应用程序中的请求正文。结果元组看起来像这样:

{
    {<<"message">>,<<"Hello World">>},             
    {<<"users">>, [
        {
            {<<"first_name">>,<<"Jules">>},
            {<<"last_name">>,<<"Winfield">>},
            {<<"id">>,1}
        },
        {
            {<<"first_name">>,<<"Vincent">>},
            {<<"last_name">>,<<"Vega">>},
            {<<"id">>,2}
        }
    ]},
    {<<"activities">>, [
        {
            {<<"type">>,<<"fetching bag">>},
            {<<"user_id">>,1}
        },
        {
            {<<"type">>,<<"discussing metrical system">>},
            {<<"user_id">>,2}
        }
    ]},
}

当然,这些小节的顺序是未知的。

我想将用户列表移交给一个创建记录列表的函数。如何在这些元组中访问此列表。

提前致谢

2 个答案:

答案 0 :(得分:2)

试试这个:

{_, ListOfUsers} = lists:keyfind(<<"users">>, 1, tuple_to_list(YourListOfUsers)).

答案 1 :(得分:1)

你的意思是模式匹配吗?

{ _ , { _ , ListOfUsers } } = YourListOfUsers.

但如果你的意思是:

  

当然,subupels的顺序是未知的。

用户元组有时会首先显示,然后前一个代码段不起作用。您应该在结果元组中强制执行某种结构。