Arduino, Json

이도현·2023년 8월 10일
0

아두이노 학습

목록 보기
33/34

1. 설치

2. 주요 객체

3. 역직렬화(Deserializing)

  • JSON 문자열 → 객체
  • 역직렬화: 직렬화된 데이터를 원래의 객체나 데이터 구조로 복원하는 과정입니다. 즉, 객체를 파일이나 네트워크 상에서 전송하기 위해 문자열 또는 바이트 배열 형태로 변환된 것을 객체로 다시 변환하는 과정을 의미합니다.
  • 직렬화는 객체를 파일 또는 데이터 베이스 등에 저장하거나, 네트워크를 통해 전송하는 등의 작업에서 이용됩니다.
  • 역직렬화는 저장된 객체를 다시 메모리에 로드하거나, 네트워크를 통해 전송받은 객체를 복원하는 등의 작업에서 이용됩니다.
#include <ArduinoJson.h>

void setup(){
	Serial.begin(115200);

	String buf = "{\"sensor\": \"temp\", \"value\": 20.5}";
	StaticJsonDocument<256> doc;
	auto error = deserializeJson(doc, buf);
	if(error)
		Serial.print("deserializeJson(doc, buf);
		Serial.println(error.c_str());
		return;
	}

	const char* sensor = doc["sensor"];
	const char* value = doc["value"];
	//float vlaue = doc["value"].as<float>();

	Serial.println(sensor);
	Serial.println(value);
}
void loop() {}
  • 타입 캐스팅
auto name = doc["name"].as<char*>();
auto stars = doc["stargazers"]["totalCount"].as<long>();
auto issues = doc["issues"]["totalCount"].as<int>()

4. 직렬화(Serializing)

  • 객체 → json 문자열
#include <ArduinoJson.h> 

void setup(){
	Serial.begin(115200);
	StaticJsonDocument<256> doc;

	doc["value"] = 42;
	doc["lat"] = 48.748010;
	doc["lon"] = 2.293491;

	char output[256];

	serializeJson(doc, output);
	Serial.println(output);
}

void loop() { }
  • 객체 → JSON 문자열, 배열
StaticJsonDocument<256> doc;

doc.add(1);
doc.add(2);

// 또는

doc[0] = 1;
doc[1] = 2;
  • 객체 → JSON 문자열, 내장 객체
StaticJsonDocument<256> doc;

JsonObject obj1 = doc.createNestedObject();
obj1["key"] = "a1";
obj1["value"] = analogRead(A1);

JsonObject obj2 = doc.createNestedObject();
obj2["key"] = "a2";
obj2["value"] = analogRead(A2);
  • 객체 → JSON 문자열, 내장 객체 배열
StaticJsonDocument<256> doc;

doc[0]["key"] = "a1";
doc[0]["value"] = analogRead(A1);

doc[1]["key"] = "a2";
doc[1]["value"] = analogRead(A2);
  • 객체 → JSON 문자열
char output[256];

serializeJson(doc, output);
profile
좋은 지식 나누어요

0개의 댓글