2016-10-18 6 views
1

저는 JSON과 jansson을 처음 사용합니다. JSON에서 jansson 라이브러리를 사용하여 메시지를 만들고 UDP를 사용하여 보내려고합니다. 바이트 배열로 필요합니다. 메시지의 버퍼 및 길이 (바이트). 나는 json_object_size()를 시도했다. 하지만 객체의 요소 수만 반환합니다. 앞으로 나아가는 길을 제안 해주세요.JSON을 C에서 바이트 배열로 변환

json_t *messagebody = json_object(); 
json_object_set_new(messagebody, "request_id", request_id); 
json_object_set_new(messagebody, "process_id", json_string(process_id)); 
json_object_set_new(messagebody, "process_server_id", json_string(process_server_id)); 
json_object_set_new(messagebody, "ip_address", json_string(my_ip_address)); 
json_object_set_new(messagebody, "action", action); 
+0

C 문자열은 "바이트 배열"입니다. 문자열 이름을 unsigned char *로 캐스팅하고, 수신기가 nul을 기대하는지 여부에 따라 길이가 strlen() 또는 strlen() +1인지 확인하십시오. –

+1

와우 jansson 문서가 재발합니다. 주요 예제는 git에 대해 99 %의 시간을 보내고 있으며, 다른 사람들을 추출하고 자신 만의 JSON을 작성하고 출력하는 예제는 없습니다. 덕분에 –

답변

2

그냥 char *json_dumps(const json_t *json, size_t flags)으로 전화하는 것 같습니다.

이렇게하면 인코딩 된 json 데이터를 나타내는 null로 끝나는 문자열에 char *을 제공합니다. 당신이 그것을 마친 후에는 그것을 자유롭게해야합니다. 길이를 바이트 단위로 얻으려면 결과에 strlen()을 사용할 수 있어야합니다.

플래그는 API 참조에서 '인코딩'에 설명되어 있습니다.

+0

. 효과가있다. – Abu

관련 문제