아두이노 툴-라이브러리 관리에서 바로 적용이 가능합니다.
비슷한 라이브러리가 많아 띄어쓰기와 문자를 자세히 보시기 바랍니다.
Json으로 검색하여 ArduinoJson을 설치합니다.
추가적으로 확인사항이 있으시다면 아래의 링크로 접속해서 확인하시면 됩니다.
최상단에 헤더파일을 추가합니다.
#include "ArduinoJson.h"
역직렬화
JSON 문서를 역직렬화하고 스택에 저장
StaticJsonDocument<200> doc; // <- 예상 보다 조금 더 많게 스택 설정.
//데이터 넣기
String json = "{'name':'홍길동'}";
deserializeJson(doc, json);
//아래와 같이 뽑아서 사용
String temp_name = doc["name"];
Serial.println(temp_name);
직렬화
힙에 저장된 JSON 문서를 직렬화
DynamicJsonDocument doc(200); //<- 예상 보다 조금 더 많게 스택 설정.
doc["name"] = "홍길동";
String jsonData="";
serializeJson(doc, jsonData); // => {"name":"홍길동"}
Serial.println(jsonData);
시리얼에 바로 출력도 가능합니다.
DynamicJsonDocument doc(200); //<- 예상 보다 조금 더 많게 스택 설정.
doc["name"] = "홍길동";
serializeJson(doc, Serial); // => {"name":"홍길동"} 시리얼에 출력
다음은 관련된 간단한 함수를 정리해 보았습니다.
Json 객체로 변환
JsonObject jsonObject = doc.to<JsonObject>();
여러 개 입력 시 다음과 같이 입력합니다.
doc["name"] = "홍길동";
doc["age"] ="20";
doc["email"] ="KillDong";
배열로 사용 시 다음과 같이 입력합니다.
DynamicJsonDocument doc(200); //<- 예상 보다 조금 더 많게 스택 설정.
doc.add("name");
doc.add("age");
doc.add("email");
clear() 함수로 내용을 모두 지울 수 있습니다.
doc.clear();
특정 키의 데이터만 지울 수 있습니다.
doc["name"] = "홍길동";
doc["age"] ="20";
doc["email"] ="KillDong";
doc.remove("email");
특정 키가 존재하는지 확인합니다.
//true 키가 문서에 있는 경우
//false 키가 문서에 없는 경우
bool hasName=doc.containsKey("name");
사이즈도 추출도 가능합니다.
doc["name"] = "홍길동";
doc["age"] ="20";
doc["email"] ="KillDong";
int size = doc.size();
Serial.println(doc.size());
// => 3
여러 depth로 입력하는 방법입니다.
//Object
DynamicJsonDocument doc(200); //<- 예상 보다 조금 더 많게 스택 설정.
JsonObject wifi = doc.createNestedObject("wifi");
wifi["SSID"] = "iptime";
//Array
DynamicJsonDocument doc(200); //<- 예상 보다 조금 더 많게 스택 설정.
JsonArray wifi = doc.createNestedArray("wifi");
wifi.add("iptime");
wifi.add("next");
depth(깊이) 사이즈 추출도 가능합니다.
Serial.println(doc.nesting());
특정 키의 값을 변경할 때는 다음과 같이 데이터를 다시 넣으면 됩니다.
doc["name"] = "홍길동";
doc["age"] = "20";
doc["email"] ="KillDong";
doc["age"] = "30";
간단하게 아두이노에서 Json 사용하는 법을 다뤄 보았습니다.
감사합니다.
'프로그래밍 > 아두이노[Arduino]&라즈베리파이[Raspberry Pi]' 카테고리의 다른 글
아두이노 16진수 변수 합치기[low byte, high byte] (0) | 2022.12.30 |
---|---|
[Arduino]아두이노 char 배열 여러개 사용(포인터) (0) | 2022.12.30 |
LTE 외장형 모뎀 아두이노 통신[LTE Cat.M1 WD-N522S] (0) | 2022.11.11 |
LTE 외장형 모뎀 통신 테스트[LTE Cat.M1 WD-N522S] (3) | 2022.11.11 |
아두이노 WIFI ESP8266(ESP-01) 펌웨어 업데이트 (0) | 2022.09.07 |