본문 바로가기
개발 업무(코딩)-개발자였을때 썼던..

C-JSON EXAMPLE 예제 #include<json/json.h>

by 주용사 2023. 1. 9.
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;
}

https://m.blog.naver.com/PostView.nhn?blogId=yababies&logNo=220031727546&proxyReferer=https:%2F%2Fwww.google.com%2F

참고한 사이트

728x90