Как прочитать значение ключа после декодирования 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 для удаления значения из объекта.

Другие вопросы по тегам