[ArduinoJson]아두이노에서 Json 사용법 정리
아두이노 툴-라이브러리 관리에서 바로 적용이 가능합니다.
비슷한 라이브러리가 많아 띄어쓰기와 문자를 자세히 보시기 바랍니다.
Json으로 검색하여 ArduinoJson을 설치합니다.
추가적으로 확인사항이 있으시다면 아래의 링크로 접속해서 확인하시면 됩니다.
ArduinoJson: Efficient JSON serialization for embedded C++
ArduinoJson is a JSON library for Arduino, IoT, and any embedded C++ project. It supports JSON serialization, JSON deserialization, MessagePack, streams, and fixed memory allocation. It has a simple API, it’s easy to use, and it’s trusted by thousands
arduinojson.org
최상단에 헤더파일을 추가합니다.
#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 사용하는 법을 다뤄 보았습니다.
감사합니다.