在Erlang语言中,我收到了下面JSON数据:
{"Time":"2020-08-16T15:28:55","BME680":{"Temperature":29.8,"Humidity":55.5,"Pressure":1003.5,"Gas":422.24},"PressureUnit":"hPa","TempUnit":"C"}
或
{"Time":"2020-08-16T11:39:49","SI7021":{"Temperature":32.4,"Humidity":99.9},"TempUnit":"C"}
我只需要为每个JSON数据选择一个值,例如:基于“BME680”值
{"Temperature":29.8,"Humidity":54.8,"Pressure":1005.0,"Gas":1513.60}
或基于“SI7021”值
{"Temperature":32.4,"Humidity":99.9}
如何在Erlang语言中激活这个任务?如果它可以更简单,我需要提取每个JSON数据的第二个值。
4条答案
按热度按时间vltsax251#
要将JSON格式的数据解码为Erlang格式(如proplists或maps),您可以尝试使用第三方库jiffy,然后可以使用简单的模式匹配,例如:
Map:
建议:
5us2dqdw2#
You can use 2 modules from mochiweb project:
Put them in some folder (f.e. test) and run erl shell and compile this files:
Decode json-as-text to json-as-erlang-term:
Retrive the items you need:
And encode erlang term to text:
There is a very short documentation for mochijson2, but it is easy to learn just practice in shell.
gkl3eglg3#
您需要熟悉rebar3,它是erlang的包管理器。然后,您可以使用像jsx这样的包,它允许您在二进制类型和Map之间进行转换。首先,您需要将您称为“JSON”的任何内容转换为二进制类型,可能使用
tuple_to_list()
,然后使用list_to_binary()
。然后可以使用jsx包将二进制文件转换为Map,这样就可以从Map中提取目标值。下面是一个例子:
my.erl:
在 shell 中:
gijlo24d4#
嗨以下你的建议是正确的我下面的代码,如果“身体”等于:
我的代码
我是二郎的新手。