cJSON을 사용하여 json 메시지를 파싱해보겠습니다.
cJSON은 github에서 검색하면 많은 정보가 나옵니다.
저는 cJSON.c파일과 cJSON.h 파일을 사용하였습니다.
아래의 소스 코드 파일은 cjson_test.c 이고, 아래의 방법으로 컴파일을 합니다.
]# gcc -o cjson_test cjson_test.c cJSON.c -lm
컴파일 할때 math 라이브러리가 필요해서 -lm을 추가하였습니다.
실행 결과는 아래와 같습니다.
=============================================================
json : {"info": [{"code": 11,"name": "cjson"},{"code": 12,"name":"clanguage"}]}
code : 11
name : cjson
code : 12
name : clanguage
=============================================================
소스 코드에 대해 간단히 설명해보겠습니다.
9 : json 문자열을 만듭니다. c에서는 수동으로 json을 만들 경우, 특수문자때문에 역슬래시(\)를 사용합니다.
11 : 출력된 json을 확인합니다. 혹시 모르니 웹사이트에 있는 json 유효성 검사 사이트에서 검사도 한번 해봅니다.
25 : json 메시지를 cJSON_parse 함수에 넣습니다.
33 : json 메시지의 info 부분을 파싱합니다.
40 : info는 json의 배열입니다. json 배열의 크기를 구합니다.
42 : for문을 활용하여 json 배열의 값들을 하나하나 출력합니다
44 : 배열 하나를 가져옵니다.
50 : code 부분을 파싱하여 출력합니다.
60 : name 부분을 파싱하여 출력합니다.
67~69 : cJSON에서는 "까지 출력되기 때문에 "을 삭제하는 작업을 수행합니다.
이상입니다.
'프로그래밍 > C' 카테고리의 다른 글
[C] 소켓 옵션 제어 ( getsockopt, setsockopt ) (1) (0) | 2022.02.23 |
---|---|
[C] undefined reference to 에러 (2) | 2021.08.13 |
[C] 정상적으로 tcp 소켓 통신이 종료 되었을 경우 (0) | 2021.03.23 |
[C] epoll 이란 (2) | 2020.12.28 |
[C] gcc의 mcmodel 옵션 (0) | 2020.12.28 |