http://blog.naver.com/PostView.nhn?blogId=yababies&logNo=220029067066&parentCategoryNo=&categoryNo=34&viewDate=&isShowPopularPosts=true&from=search
에서 JSON 타입의 데이터 통신을 할 일이 생겼다. 참 난감했다.
JSON이 뭔지도 모르는데 JSON 타입으로 통신을 하라니...
naver사전을 보면 아래와 같다.
JSON(제이슨, JavaScript Object Notation)은, 인터넷에서 자료를 주고받을 때 그 자료를 표현하는 방법이다. 자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합하다. 그 형식은 자바스크립트의 구문 형식을 따르지만, 프로그래밍 언어나 플랫폼에 독립적이므로 C, C++,C#, 자바, 자바스크립트, 펄, 파이썬 등 많은 언어에서 이용할 수 있다. |
자 이제 가능하다는 것을 알았으니 한번 해 보자.
1. library받기
사용하기 위해서 아래사이트에서 우측 메뉴에서 Download Zip을 통해 library를 받자.
https://github.com/json-c/json-c
2. library 컴파일
컴파일은 받은 파일의 압축을 풀고 ./configure, make, make install ( root user )을 실행하면 된다.
./configure를 default로 하면 header는 /usr/local/include/json 아래에 라이브러리는 /usr/local/lib에 copy된다.
header나 library를 다른 위치에 copy하고 싶으면 아래와 같이 하고 이때는 make install을 꼭 root user로 할 필요는 없다.
./configure --libdir=/home/lib --includedir=/home/include
또한 .so가 싫을 경우 아래와 같이 하면 .a가 만들어진다.
./configure --enable-static=yes --enable-shared=no
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 31 | \/]$ ls ./ ../ json-c-json-c-0.11-20130402.tar \/]$ \/]$ \/]$ tar xvf json-c-json-c-0.11-20130402.tar json-c-json-c-0.11-20130402/ json-c-json-c-0.11-20130402/.gitignore json-c-json-c-0.11-20130402/AUTHORS json-c-json-c-0.11-20130402/Android.configure.mk json-c-json-c-0.11-20130402/COPYING json-c-json-c-0.11-20130402/ChangeLog json-c-json-c-0.11-20130402/Doxyfile json-c-json-c-0.11-20130402/INSTALL ..... \/]$ \/]$ cd json-c-json-c-0.11-20130402 \/]$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make sets $(MAKE)... (cached) yes checking for style of include used by make... GNU checking for gcc... gcc ..... \/]$ make \/]$ su - root \/]# cd json-c-json-c-0.11-20130402 \/]# make install |
3. 소스 테스트
자 이제 간단한 소스를 짜서 테스트 해 보자.
아래는 json.c 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> #include <json/json.h> int main(int argc, char **argv) { json_object *myobj, *dataobj; // 메모리 할당 myobj = json_object_new_object(); dataobj = json_object_new_object(); json_object_object_add(dataobj, "test1", json_object_new_int(1)); json_object_object_add(dataobj, "test2", json_object_new_string("TEST2")); json_object_object_add(myobj, "testData", dataobj); printf("myobj.to_string()=%s\n", json_object_to_json_string(myobj)); // 메모리 해제 json_object_put(dataobj); json_object_put(myobj); return(0); } |
Makefile 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | CC = gcc INC = -I. LIBS = -ljson-c CFLAGS = -O2 -g -Wall ${INC} json : json.o $(CC) $(CFLAGS) -o $@ $< $(LIBS) clean : rm -f *.o core .SUFFIXES: .o .c.o : $(CC) $(CFLAGS) -c $< |
컴파일 및 실행해 보면 아래와 같이 나옵니다.
1 2 3 4 5 6 7 8 9 | \/]$ \/]$ make json gcc -O2 -g -Wall -I. -c json.c gcc -O2 -g -Wall -I. -o json json.o -ljson-c \/]$ \/]$ json myobj.to_string()={ "testData": { "test1": 1, "test2": "TEST2" } } \/]$ |
이상으로 간단하게 json library 설치 및 테스트에 대한 포스팅을 마칩니다.
[출처] [LINUX C] C언어에서 JSON (JSON-C) 사용하기|작성자 김부자