Как прочитать значение ключа после декодирования JSON в Erlang
Вот короткий запрос
В Эрланге я разобрал json используя
Ccode = jiffy:decode(<<"{\"foo\": \"bar\"}">>).
это возвращается
{[{<<"foo">>,<<"bar">>}]}
Теперь цель состоит в том, чтобы получить значение 'foo' и оно должно вернуть 'bar'
любая помощь приветствуется.
3 ответа
Решение
Вы можете извлечь список атрибутов объекта JSON, используя сопоставление с образцом, а затем найти значение по ключу в результирующем списке:
{Attrs} = jiffy:decode(<<"{\"foo\": \"bar\"}">>),
FooValue = proplists:get_value(<<"foo">>, Attrs).
Я нахожу JSX проще в использовании, чем Jiffy.
Eshell V6.2 (abort with ^G)
1> Data = jsx:decode(<<"{\"foo\": \"bar\"}">>).
[{<<"foo">>,<<"bar">>}]
2> proplists:get_value(<<"foo">>, Data).
<<"bar">>
Вы даже можете разобрать его в Картах.
3> Map = jsx:decode(<<"{\"foo\": \"bar\"}">>, [return_maps]).
#{<<"foo">> => <<"bar">>}
4> maps:get(<<"foo">>, Map).
<<"bar">>
Вы можете попробовать модуль ej:
Модуль ej облегчает работу с терминами Эрланга, представляющими JSON в формате, возвращаемом jiffy, mochijson2 или ejson. Вы можете использовать ej:get/2 для обхода объекта и возврата определенного значения, ej:set/3 для обновления значения внутри объекта или ej:delete/2 для удаления значения из объекта.