iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
1

上次我們介紹了MQTT發送arduino傳進來的資料,今天要來介紹現在常用的json格式
首先先說json是什麼,json是一種資料儲存格式,再網頁中常常使用的一種格式
而json格式在儲存的時候會有key跟value
以下面的程式為例

{
    "CO2":431
    "VTOC":5
}

其中 key是CO2和VTOC,value是431 跟 5
要注意的是 json 前後需要大括號框住 然後KEY跟value要用雙引號包者 但如果是一個數字 就不需要雙引號

在將arduino的資料包成json的時候 有兩種方法 一種是在傳送資料前就先包成json
另一種是 資料送進來在包成json
今天要介紹比較簡單的,在傳送前包成JSON格式

char data;
#include "Adafruit_CCS811.h" 
Adafruit_CCS811 ccs;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); 
  ccs.begin();
  delay(1000);
  while(!ccs.available());
}

void loop() {
  while(Serial.available()>0){
    data = Serial.read();
    if(data == 'g'){ 
      if(ccs.available()){
        if(!ccs.readData()){
          Serial.print("{\"CO2\":");
          Serial.print(ccs.geteCO2());
          Serial.print(",");
          Serial.print("\"TVOC\":");
          Serial.print(ccs.getTVOC());
          Serial.print("}\n");
        }
      }
    }
  }
}

這樣就把資料包成JSON了,不過要注意如果要印出雙引號 需要使用跳脫字元

什麼是跳脫字元 引用wiki的一句話:(在C語言中 用反斜線字元「\」作為跳脫字元,來表示那些不可列印的ASCII控制符) 意思是在c語言中 雙引號代表字串 所以只要打雙引號 程式就會自動判斷為你要字串所以無法print出來 這時就需要跳脫字元來表達說我要印出雙引號

回歸到程式,我們看輸出的結果

這樣成功的輸出JSON格式的資料了
然後把JSON格式解析之後就可以利用KEY去尋找資料,也可以只印出值

Arduno_data = JSON.parse(line);
console.log(Arduno_data)
Sensor_data = Object.values(Arduno_data)
console.log(Sensor_data)


這樣子做的好處是 如果今天資料量很大時 或是我只需要特定KEY的值的時候
我們可以利用KEY去搜尋我們需要的資料.

明天要來介紹MONGODB 一個利用JSON格式除存資料的資料庫


上一篇
DAY11 nodejs上使用MQTT發送資料
下一篇
DAY13 MONGODB 介紹與使用
系列文
初學者也能實做的環控系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言