这是一个简短的查询
在 Erlang 我使用解析 json
Ccode = jiffy:decode(<<"{\"foo\": \"bar\"}">>).
它返回
{[{<<"foo">>,<<"bar">>}]}
现在的目标是获取 'foo' 的值,它应该返回 'bar'
任何帮助表示赞赏。
我发现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">>
您可以使用模式匹配提取 JSON 对象的属性列表,然后在结果列表中通过键查找值:
{Attrs} = jiffy:decode(<<"{\"foo\": \"bar\"}">>),
FooValue = proplists:get_value(<<"foo">>, Attrs).
您可以尝试ej模块:
ej 模块可以更轻松地处理以 jiffy、mochijson2 或 ejson 返回的格式表示 JSON 的 Erlang 术语。您可以使用 ej:get/2 遍历对象并返回特定值,使用 ej:set/3 更新对象内的值,或使用 ej:delete/2 从对象中删除值。