使用rfc4627从erlang中的json数组中获取特定数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用rfc4627从erlang中的json数组中获取特定数据相关的知识,希望对你有一定的参考价值。

这是运行以下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), 

输出---

{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时打开灯泡

那么,我该怎么办呢?

答案

返回的结构似乎返回一个任务列表,每个任务都是一个proplist,你可以做类似的事情

-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).

在shell中运行它时,您会得到:

1> test:get_tasks(test:input()).
[<<"Turn on the bulb when the temperature is greater than 28 ">>]

以上是关于使用rfc4627从erlang中的json数组中获取特定数据的主要内容,如果未能解决你的问题,请参考以下文章

是否为 null 有效 JSON(4 字节,仅此而已)

JSON 省略了 Infinity 和 NaN; ECMAScript 中的 JSON 状态?

JSON 省略了 Infinity 和 NaN; ECMAScript 中的 JSON 状态?

Python Json模块完全总结

RPC好,还是RESTful好?

.NET 开源项目 StreamJsonRpc 介绍[上篇]