วันอาทิตย์ที่ 6 กันยายน พ.ศ. 2558

Node-RED : JSON format

 

JSON หรือ JavaScript Object Notation

 

วันนี้ขอนำเสนอรูปแบบการจ้ดข้อมูลที่ใช้กันอย่างเป็นปกติของ IoT ตือรูปแบบข้อมูลแบบ JSON มีรูปแบบที่ง่าย ใช้งานได้อย่างมีประสิทธิภาพ โดยเฉพาะ NodeRED ก็ใช้รูปแบบนี้ในการบันทีกและค้นหาข้อมูล

JSON ใช้การจับคู่ที่เรียกว่า Key-Value pair โดยการวาง key หรือชื่อของข้อมูล ไว้ด้านซ้าย คั่นด้วยเครื่องหมาย semi colon ส่วน value หรือค่าจะอยู่ด้านขวา และมีสองแบบคือเป็น string ที่อยู่ในเครื่องหมายคำพูด และตัวเลข โดยตัว node เองจะตีความเอาว่าตัวเลขนั้นเป็นแบบไหน จำนวนเต็มหรือจำนวนจริง ซึ่งเป็นคุณสมบัติของภาษา javascripts นั่นเอง

ส่วนของการจัดวาง JSON จะประกอบ key-value pair อย่างน้อย 1 ชุด นำหน้าด้วยเครื่องหมายวงเล็บปีกกาเปิด และปิดท้ายด้วยวงเล็บปีกกาปิด

{ “key”:”value” }

โดยเรียกรูปแบบนี้ว่า JSON Object

ในหนึ่ง object สามารถประกอบด้วยหลาย key-value pair โดยคั่นแต่ละชุดด้วยเครื่องหมาย comma

{ “key1”:”value1”, “key2”:”value2”}

จำนวนคู่ จะขึ้นอยู่กับความยาวของตัวอักษรรวม ไม่ให้เกินจำนวนตัวอักษรสูงสุดของตัวแปรแบบ string ของภาษาโปรแกรที่เราใช้งาน

นอกจาก object แล้วยังมีรูปแบบ array ที่ประกอบด้วย object หรือ/และ array หลายๆตัวประกอบกันคั่นด้วยเครื่องหมาย comma เช่นกัน การบ่งบอกว่าเป็น array ด้วยการเปิดปิดด้วยวงเล็บเหลี่ยม [ ….. ]

{ “array” : [ {“obj1”:”val1”} , {“obj2”:”val2”} ] }

การแปลความจะได้ว่า เป็น array ที่มีสมาชิก 2 ตัว ชื่อของ array คือ array

array[0] = {“obj1”:”val1”}
array[1] = {“obj2”:”val2”}

ข้อสังเกตุ JSON จะเป็น object จึงเริ่มต้นด้วยเครื่องหมายปีกกา และสามารถประกอบด้วย object และ array สลับไปมาด้วย

{ “obj1”:”val1”,”obj2”:”val2”,”arr1” : [ {“obj3”:”val3”,”obj4”:”val4”},{“obj5”:”val5”,”obj6”:”val6”} ] }

ประกอบด้วย 3 object โดย arr1 เป็น array มีสมาชิก 2 ตัว แต่ละตัวมี object สมาชิกอยู่ 2 ตัว

array สามารถสร้างได้หลายมิติ การจัดวาง object หรือ array ไม่ถูกต้อง จะเกิดข้อผิดพลาดตอนใช้งาน

ใน NodeRED เราจะใช้รูปแบบ JSON ได้ตลอดเวลา ในการแปลงข้อมูลไปมา ใน function node ถ้าไม่มีความเข้าใจในรูปแบบ JSON แล้ว อาจมีความยุ่งยากในการเขียนโปรแกรม

ในภาษาโปรแกรมส่วนใหญ่จะสร้างไลบรารี่ในการสร้าง (encoding) และตีความ (decoding) หลายที่ใช้คำว่า parser

ส่วนของ Arduino ผมใช้ไลบรารี่ ชื่อ ArduinoJson ในการ parse ข้อมูล JSON อย่างไรก็ตาม ด้วยที่ JSON เป็นการนำเสนอข้อมูลแบบตัวอักษร ทำให้เราสามารถเข้าใจได้ง่าย

ในส่วนของการใช้งาน คงจะแฝงไปในเนื้อหาของโพสต์ แต่ละโพสต์

 

 

 

 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น