728x90
https://stockdragon.tistory.com/90
설치는 여기를 참고
윗부분은 json형식을 만드는 법이고 밑은 json형식을 파싱하는 법이다.
json_object_object_get은 deprecated되서 사용불가이다. 대신에 json_object_object_get_ex를 사용
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<json/json.h>
int main()
{
char data[1024] = "{\n \"dataHeader\" : {\n \"udId\" : \"UDID\",\n \"subChannel\" : \"subChannel\",\n \"deviceModel\" : \"Android\",\n \"deviceOs\" : \"Android\",\n \"carrier\" : \"KT\",\n \"connectionType\" : \"..\",\n \"appName\" : \"..\",\n \"appVersion\" : \"..\",\n \"hsKey\" : \"body\",\n \"scrNo\" : \"0000\"\n },\n \"dataBody\" : {\n \"type\" : \"1\",\n \"ciNo\" : \"yO==\",\n \"clientId\" : \"l111\",\n \"loginType\" : \"2\"\n }\n}";
json_object *myobj, *dataobj, *headerobj;
// 메모리 할당
myobj = json_object_new_object();
dataobj = json_object_new_object();
headerobj = json_object_new_object();
char ztemp[1024];
memset(ztemp, 0x00, sizeof(ztemp));
memcpy(ztemp, "test", sizeof(ztemp));
json_object_object_add(dataobj, "next", json_object_new_string(""));
json_object_object_add(dataobj, "clsf", json_object_new_string("9"));
json_object_object_add(dataobj, "isCd", json_object_new_string(""));
json_object_object_add(dataobj, "pwd", json_object_new_string("1111"));
json_object_object_add(dataobj, "gnlAcNo", json_object_new_string("11111"));
json_object_object_add(myobj, "dataBody", dataobj);
json_object_object_add(headerobj, "carrier", json_object_new_string("KT"));
json_object_object_add(headerobj, "deviceOS", json_object_new_string("Android"));
json_object_object_add(headerobj, "deviceModel", json_object_new_string("Android"));
json_object_object_add(myobj, "dataHeader", headerobj);
printf("myobj.to_string()=%s\n", json_object_to_json_string(myobj));
// 메모리 해제
json_object_put(headerobj);
json_object_put(dataobj);
json_object_put(myobj);
printf("---------------------------------------------\n");
json_object *parsemyobj, *parsedataobj;
json_object *parseheaderobj;
json_object *deviceOS;
printf("data [%s]\n", data);
parsemyobj = json_tokener_parse(data);
printf("myobj.to_string()=%s\n", json_object_to_json_string(parsemyobj));
json_object_object_get_ex(parsemyobj, "dataHeader", &parseheaderobj);
json_object_object_get_ex(parsemyobj, "dataBody", &parsedataobj);
json_object *hval, *dval;
json_object_object_get_ex(parseheaderobj, "carrier", &hval);
printf("carrier : %s\n", json_object_get_string(hval));
json_object_object_get_ex(parsedataobj, "ciNo", &hval);
printf("ciNo : %s\n", json_object_get_string(hval));
// 메모리 해제
json_object_put(parsemyobj);
json_object_put(parsedataobj);
json_object_put(parseheaderobj);
json_object_put(deviceOS);
json_object_put(hval);
json_object_put(dval);
return 0;
}
참고한 사이트
728x90
'개발 업무(코딩)-개발자였을때 썼던..' 카테고리의 다른 글
C언어 HMAC SHA256 샘플코드(openssl dgst popen) (0) | 2023.01.09 |
---|---|
C-JSON EXAMPLE 예제 2 - ARRAY (0) | 2023.01.09 |
json 불필요한 공백,탭,개행 제거 (0) | 2023.01.09 |
embedded python with C (0) | 2023.01.09 |
개발 업무..확장가능한 키움 open api(조회성) (0) | 2023.01.08 |