일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- ChatGPT
- 자동블로그
- 무료일러스트
- 챗지피티
- HTML
- 파이썬
- 그누보드
- 자바스크립트
- Php공부
- 쿠팡자동포스팅
- php
- Ajax
- c#
- 파싱
- 웹
- 아두이노 초보
- 아두이노 기초강좌
- 프로그램
- 자동포스팅
- 자동글쓰기
- cocos2d-x
- 아두이노 강좌
- 아두이노
- 쿠파스
- 쿠팡파트너스
- Javascript
- 워드프레스
- Python
- flex
- 쿠팡 블로그
- Today
- Total
플밍
아두이노에서 Json 사용하기 본문
ArduinoJson 은 Arduino 에서 Json 을 사용할 수 있는 라이브러리입니다.
#ads_1
해당 페이지에 예제가 있지만 Json 동적생성에 대한 자료가 조금 부족해 보여 테스트를 해보았습니다.
[
[{"aaa":"AAA","aab":"AAB"},
{"aba":"ABA","abb":"ABB"}
],
[
{"baa":"BAA","bab":"BAB"},
{"bba":"BBA","bbb":"BBB"}
]
]
위와 같은 2차원 배열로 구성된 json을 만들어서 loop에서 출력하는 예제입니다
#ads_2
#include <ArduinoJson.h>
//Json버퍼를 만든다
StaticJsonBuffer<200> jsonBuffer; //200은 버퍼크기
//다른곳에서도 사용하기 위해 포인터로 선언했다
JsonArray* group =
&jsonBuffer.createArray();
JsonArray* olist =
&group->createNestedArray();
JsonObject* option;
void setup() {
Serial.begin(9600);
group = &jsonBuffer.createArray(); // group 배열을 만든다 (1차원)
olist = &group->createNestedArray(); // group 배열안에 olist 배열을 만든다 (2차원)
option = &olist->createNestedObject(); // olist 배열에 object를
만든다
option->set("aaa", "AAA"); // (*option)["aaa"] = "AAA";
option->set("aab", "AAB");
option = &olist->createNestedObject();
option->set("aba",
"ABA");
option->set("abb", "ABB");
olist = &group->createNestedArray();
option = &olist->createNestedObject();
option->set("baa",
"BAA");
option->set("bab", "BAB");
option = &olist->createNestedObject();
option->set("bba",
"BBA");
option->set("bbb", "BBB");
}
void loop() {
//임시변수라서 무조건 참조로 받아야 된다
JsonArray& ol =
group->get(0);
JsonObject& o = ol[0];
String s =
o["aaa"]; // 변수의 형태에 따라 자동 변환된다
Serial.println(s); // "AAA" 를 출력한다
Serial.println(group->size()); // group 배열의 크기를 출력한다
//Serial.println(o["aaa"].asString()); //바로 사용하려면 as<타입> 형태로 캐스팅해준다
//o.printTo(Serial); // json 객체를 그대로 출력하기 위한 방법
//Serial.println("");
}
주의할 점은 group->get(0) 에서 포인터로 받으면 안됩니다.
get 함수내에서 임시 생성한 변수라서 리턴한뒤 사라지기 때문에 포인터로 받으면 에러가 납니다.
gcc만 그런건지 잘 모르겠지만 자바처럼 참조 개수가 0이 되면 메모리에서 사라지는 모양입니다
제가 c++실력이 허접해서 이부분에서 한참 고생했네요 ㅠㅠ
#ads_3