Получить конкретные данные из массива json в erlang, используя rfc4627 - PullRequest
0 голосов
/ 01 апреля 2019

Это вывод, который я получаю после выполнения следующих 2 команд.

Wc = os:cmd("curl -s -k -X GET 'http://10.210.12.158:10065/iot/get/task_id?id=1'"),
    WW = decode_json(Wc), 

OUTPUT ---

{ok,{obj,[{"status",200},
    {"data",
        [{obj,[{"id",1},
           {"task",
                <<"Turn on the bulb when the temperature is greater than 28 ">>},
           {"working_condition",1},
           {"depending_value",<<"Temperature">>},
           {"device",<<" BulbOnly">>},
           {"turning_point",28},
           {"config_id",null}]}]}]}}

Я хочу получить эти данные отдельно.

Например - Задание = Включить лампочку, когда температура превышает 28

Итак, как я могу это сделать?

1 Ответ

0 голосов
/ 18 апреля 2019

Эта возвращаемая структура, кажется, возвращает список задач, и каждая задача, являющаяся проплистом, может быть сделана примерно так:

-module(test).
-export([input/0, get_tasks/1]).

input() ->
  {ok,{obj,[{"status",200},
    {"data",
        [{obj,[{"id",1},
           {"task",
                <<"Turn on the bulb when the temperature is greater than 28 ">>},
           {"working_condition",1},
           {"depending_value",<<"Temperature">>},
           {"device",<<" BulbOnly">>},
           {"turning_point",28},
           {"config_id",null}]}]}]}}.


get_tasks({ok, {obj, [_Status, {"data", Tasks}|_Tail]}}) ->
  [ get_task_description(T) || T <- Tasks ].

get_task_description({obj, Proplist}) ->
  proplists:get_value("task", Proplist).

При запуске в оболочке вы получите:

1> test:get_tasks(test:input()).
[<<"Turn on the bulb when the temperature is greater than 28 ">>]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...