아두이노

JSON Parsing

2017.10.12 15:39

아두이노의 JSON 파싱 라이브러리

(주어진 문자열에서 두 단어(내가 지정 가능) 사이의 부분 문자열을 찾는 함수)

// 1번째 인자로 원본문자열

// 2번째 인자로 찾을 것의 앞부분에 있는 문자열

// 3번째 인자로 찾을 것의 뒷부분에 있는 문자열

// 반환값 : 찾은 문자열


JSON 파서

String jsonParser(String originalStr, String beforeStr, String afterStr) { 

  return originalStr.substring(originalStr.indexOf(beforeStr) + beforeStr.length(), originalStr.indexOf(afterStr));

}


XML 파서

String xmlParser(String originalStr, String beforeStr, String afterStr) { 

  return originalStr.substring(originalStr.indexOf(beforeStr) + beforeStr.length(), originalStr.indexOf(afterStr));

}


JSON파서와 XML파서다. 자세히 보면 알겠지만, 실은 이름만 다르다.

(왜 다르게 했냐면.. 함수 이름을 jsonOrXmlParser 이런 식으로 길게 짓고 싶지 않아서다.

그렇다고 그냥 parser라고 하면 애매하니까..)

어쨌든 복사해서 쓰면 된다.

(몰라도 되는 부분은 흐릿하게 처리함)









=============== 아래는 굳이 읽지 않아도 됨 ===============



아두이노에서 파싱을 위한 자작 라이브러리를 만들어야 하는 이유
통신쪽 프로젝트를 하다 보면 XML이나 JSON을 파싱할 일이 무척 많다.

아두이노나 Wemos D1으로 프로젝트를 할 때도 적용할 수 있는 JSON 파싱 라이브러리가 있다.

하지만 String이 아닌 char문자열을 지원하는데다 추가 라이브러리를 include 해야 되기 때문에 저장공간이 작은 MCU 프로그래밍에는 적합하지 않은 면이 있다.


파싱을 하려면 String클래스의 어떤 함수들이 쓰이나?

그래서 자작 라이브러리를 사용하기로 했다.

파싱을 하려면 String 클래스의 indexOf, substring, length함수를 사용하면 된다.


원본문자열.indexOf(찾을문자열)

원본문자열.length()

원본문자열.substring(시작 인덱스, 여기 넣은 숫자의 앞까지 읽음)



동작을 대충 살펴보자

{"temp":286.2,"pressure":1020,"humidity":58,"temp_min":285.15,"temp_max":287.15}


//1번째 인자로 원본문자열

//2번째 인자로 찾을 것의 앞부분에 있는 문자열(temp":)

//3번째 인자로 찾을 것의 뒷부분에 있는 문자열(,"pressure)

//반환값 : 찾은 문자열(286.2)

286.2 jsonParser(String originalStr, String temp":, String ,"pressure) { 

  return originalStr.substring(originalStr.indexOf(temp":) + temp":.length(), originalStr.indexOf(,"pressure)); 

  //함수 내부는 일단 신경쓰지 않아도 됨. 어차피 우린 사용만 하면 되니까.

}

'아두이노' 카테고리의 다른 글

Wemos D1 리모컨 사용하기  (0) 2017.10.12
JSON Parsing  (0) 2017.10.12
circuito.io 소개  (0) 2017.10.05
인터럽트 예제(아두이노 우노)  (0) 2017.10.05
아두이노 메모리 간단 정리  (0) 2017.10.05
서보 모터 구동 예제  (0) 2017.10.04