如何从struct proplist JSON对象中提取正确的信息

如何从struct proplist JSON对象中提取正确的信息,json,parsing,erlang,Json,Parsing,Erlang,在使用mochijson2解码JSON数据之后,我得到了这个结构化的proplist {struct, [{<<"query">>, {struct, [{<<"count">>,4}, {<<"created">>,<<"2013-11-08T18:33:07Z">>}, {<<"lang">>,<<"en-US">>},

在使用mochijson2解码JSON数据之后,我得到了这个结构化的proplist

 {struct,
 [{<<"query">>,
  {struct,
  [{<<"count">>,4},
   {<<"created">>,<<"2013-11-08T18:33:07Z">>},
   {<<"lang">>,<<"en-US">>},
   {<<"results">>,
    {struct,
        [{<<"quote">>,
          [{struct,
               [{<<"symbol">>,<<"YHOO">>},
                {<<"Ask">>,<<"32.99">>},
                {<<"AverageDailyVolu"...>>,<<"18383000">>},
                {<<"Bid">>,<<"32.98">>},
                {<<"AskRealt"...>>,<<"32.9"...>>},
                {<<"BidR"...>>,<<...>>},
                {<<...>>,...},
                {...}|...]},
{struct,
[{,
{struct,
[{,4},
{,},
{,},
{,
{struct,
[{,
[{struct,
[{,},
{,},
{,},
{,},
{,},
{,},
{,...},
{...}|...]},
正如您在上面看到的,我想进入[{struct,[{,}]]等,并开始从那里提取数据。这就是我所取得的进展,但我似乎无法将其提取出来。感谢您的帮助

Struct = mochijson2:decode(Body), Struct,
{struct, JsonData} = Struct,
{struct, Symbol} = proplists:get_value(<<"query">>, JsonData),
{struct, New} = proplists:get_value(<<"results">>, Symbol),
{struct, New1} = proplists:get_value(<<"quote">>, New),
 Id = proplists:get_value(<<"symbol">>, New1),
 Id.
Struct=mochijson2:decode(Body),Struct,
{struct,JsonData}=struct,
{struct,Symbol}=proplist:get_value(,JsonData),
{struct,New}=proplist:get_value(,Symbol),
{struct,New1}=proplist:get_value(,New),
Id=proplist:get_值(,New1),
身份证件
表达式

{struct, New1} = proplists:get_value(<<"quote">>, New),
{struct,New1}=proplist:get_value(,New),
包含不正确的匹配项。因此:

[{struct, New1}] = proplists:get_value(<<"quote">>, New),
[{struct,New1}]=proplist:get_value(,New),

为什么选择mochijson2?试试看,它非常简单,不创建atom结构,因此模式匹配更容易(更少的字符),因为一旦创建了proplist。

哦,我就这样做了。但是我现在在那行上遇到了一个错误,说“**异常错误:右侧值不匹配”。这项工作为我完成并重新返回:
Struct=mochijson2:decode(Body),{Struct,JsonData}=Struct,{Struct,Symbol}=proplist:get_value(,JsonData),{Struct,New}=proplist:get_value(,Symbol),[{Struct,New1}]=proplist:get_value(,New),Id=proplist:get_value(,New1),Id.
你的代码是一样的吗?哦,
New
包含一个结构列表。你可以使用它:
[{struct,New1}}|]=proplist:get_value(,New)
来获取它们中的第一个,或者类似于
New1=proplist:get_value(,New),[proplist:get_value(,S)|{struct,S}哦,我明白了,谢谢你,我明白你的意思!但是如果我用列表理解,我怎么能从中得到一些选择性的数据,例如一个列表中的所有数据,而不是其余的?例如:
[{proplist:get_value(,S),proplist:get_value(,S),proplist:get_value(,S)}{struct,S}