如何在Erlang中解码json后读取键值

mbzjlibv  于 2022-12-08  发布在  Erlang
关注(0)|答案(3)|浏览(202)

下面是一个简短的查询
在Erlang中,我使用

Ccode = jiffy:decode(<<"{\"foo\": \"bar\"}">>).

它返回

{[{<<"foo">>,<<"bar">>}]}

现在目标是获取'foo'的值,它应该返回'bar'
任何帮助都是感激不尽的。

vecaoik1

vecaoik11#

我发现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">>
k3fezbri

k3fezbri2#

可以使用模式匹配提取JSON对象的属性列表,然后在结果列表中按键查找值:

{Attrs} = jiffy:decode(<<"{\"foo\": \"bar\"}">>),
FooValue = proplists:get_value(<<"foo">>, Attrs).
wxclj1h5

wxclj1h53#

您可以尝试ej模块:
ej模块使得使用Erlang术语来表示jiffy、mochijson 2或ejson返回格式的JSON变得更加容易。可以使用ej:get/2遍历对象并返回特定值,使用ej:set/3更新对象中的值,或者使用ej:delete/2从对象中删除值。

相关问题