반응형

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 설치 및 테스트에 대한 포스팅을 마칩니다.


+ Recent posts