如何在erlang中解码json后读取键值
How to read a key value after decoding json in erlang
这是一个简短的查询
在 Erlang 中,我使用
解析了 json
Ccode = jiffy:decode(<<"{\"foo\": \"bar\"}">>).
它returns
{[{<<"foo">>,<<"bar">>}]}
现在的目标是获取 'foo' 的值,它应该 return 'bar'
感谢任何帮助。
您可以使用模式匹配提取 JSON 对象的属性列表,然后通过结果列表中的键查找值:
{Attrs} = jiffy:decode(<<"{\"foo\": \"bar\"}">>),
FooValue = proplists:get_value(<<"foo">>, Attrs).
你可以试试ej模块:
The ej module makes it easier to work with Erlang terms representing JSON in the format returned by jiffy, mochijson2, or ejson. You can use ej:get/2 to walk an object and return a particular value, ej:set/3 to update a value within an object, or ej:delete/2 to remove a value from an object.
我发现 jsx 易于使用:
Eshell V6.2 (abort with ^G)
1> Data = jsx:decode(<<"{\"foo\": \"bar\"}">>).
[{<<"foo">>,<<"bar">>}]
2> proplists:get_value(<<"foo">>, Data).
<<"bar">>
您甚至可以将其解析为 Maps。
3> Map = jsx:decode(<<"{\"foo\": \"bar\"}">>, [return_maps]).
#{<<"foo">> => <<"bar">>}
4> maps:get(<<"foo">>, Map).
<<"bar">>
这是一个简短的查询
在 Erlang 中,我使用
解析了 jsonCcode = jiffy:decode(<<"{\"foo\": \"bar\"}">>).
它returns
{[{<<"foo">>,<<"bar">>}]}
现在的目标是获取 'foo' 的值,它应该 return 'bar'
感谢任何帮助。
您可以使用模式匹配提取 JSON 对象的属性列表,然后通过结果列表中的键查找值:
{Attrs} = jiffy:decode(<<"{\"foo\": \"bar\"}">>),
FooValue = proplists:get_value(<<"foo">>, Attrs).
你可以试试ej模块:
The ej module makes it easier to work with Erlang terms representing JSON in the format returned by jiffy, mochijson2, or ejson. You can use ej:get/2 to walk an object and return a particular value, ej:set/3 to update a value within an object, or ej:delete/2 to remove a value from an object.
我发现 jsx 易于使用:
Eshell V6.2 (abort with ^G)
1> Data = jsx:decode(<<"{\"foo\": \"bar\"}">>).
[{<<"foo">>,<<"bar">>}]
2> proplists:get_value(<<"foo">>, Data).
<<"bar">>
您甚至可以将其解析为 Maps。
3> Map = jsx:decode(<<"{\"foo\": \"bar\"}">>, [return_maps]).
#{<<"foo">> => <<"bar">>}
4> maps:get(<<"foo">>, Map).
<<"bar">>