JSON 데이터 표현 방식
데이터 발생→데이터 변형/직렬화→MQTT Payload에 적재하여 발송→변형되 데이터수신→데이터 표현/저장 의 과정으로 데이터가 전송되고 처리될 것이다.
이 과정에서 어플리케이션이 데이터를 변형, 표현/해석, 저장을 하기위해서는 통신하는 양측간에 데이터 형식에 대한 약속이 필요하겠다.
데이터 표현방식 중 JSON(JavaScript Object Notation)은 가독성이 높은 장점으로 IOT에서도 가장 널리 사용되고 있으며, 이 페이지에서 간단히 살펴본다.
⊕ 가독성 좋다 → Parsing 알고리즘 구현이 어렵다 & 자원(네트워크, MCU)의 효율적 사용이 어렵다.
1. JSON 데이터 표현의 예
아래는 JSON 방식으로 표현된 데이터이다. JSON은 모르더라도 무슨 내용인지 대강 알 수 있을 만큼 가독성이 좋다.
{
“Kichen”: {
“light”: true,
“Temperature”: 25,
“humidity”: 30
},
“Room”: {
“light”: false,
“Temperature”: 35,
“humidity”: 40
}
}
MQTT Payload 로 아래와 같이 적재되어 네트워크로 실려서 보내질 것이다.
→ {“Kichen”:{“light”:true,”Temperature”:25,”humidity”:30},”Room”:{“light”:false,”Temperature”:35,”humidity”:40}} → 총 110Byte 소요
이상의 JSON 구문에 대해서 좀더 이해가 필요하다면 아래 4번 항목에서 JSON 데이터 타입을 참조하도록 한다.
3. JSON 구문 검증 툴 소개
온라인상에 다양한 JSON 구문에 대한 검증 툴이 있다. 각자 기호에 맞는 툴을 찾아 검사해볼 수 있을 것이며 그 중 하나를 소개한다. → §https://jsonlint.com/
4. JSON 데이터 타입 참조
♦ 기본 Data Type
데이터 타입 | 표현의 예 | 설명 |
String | “temperature” | 문자 및 문자열에 대한 표현 |
Number | 3, 1.4, -1e3 | 숫자애 댜헌 표현 |
Boolean | true, false | Boolean 표현 |
Null | null | Null 값에 대한 표현 |
♦ Array Data Type → 기본데이터를 집합하여 배열로 표현하는 데이터 타입이다. 다음의 예를 통해 그 형식을 이해하자.
[ “livingroom”, “room1”, “room2” ] | 문자열에 대한 배열의 예 |
[ 1,2,3,4 ] | 숫자에 대한 배열의 예 |
[ “tag”, 1.25, false, null ] | 문자열, 숫자, Boolean, null에 대한 배열 |
[ [ “tag1”, 1.25, false, null], [“tag2”, 1.35, true, null] ] | 2차원 배열의 구조 |
♦ Object Data Type → 기본데이터를 Name:Value의 쌍으로 표현하는 데이터 타입이다. 다음의 예를 통해서 표현방식을 이해하자.
{ “name”: “momoiot” } | 문자열, 문자열의 단일 쌍으로 구성된 오브젝트 |
{ “Number”:10 } | 문자열, 숫자의 단일 쌍으로 구성된 오브젝트 |
{ “Key”: “Name”, “Value”: 2 } | 문자열+문자열, 문자열+숫자의 쌍으로 구성된 오브젝트 |
♦ Object+Array의 조합
Object를 포함하고 있는 배열 | 배열을 포함하고 있는 Object |
[ 1,2, { “number”:35 } ] |
{ “Sequence”: [1,2,3,4], “Answer”:false } |