在使用C語(yǔ)言解析和組裝JSON數(shù)據(jù)時(shí),拼接字符串是不可避免的操作。下面介紹一些常用的方法。
char *str = (char*)malloc(1024); sprintf(str, "{ \"name\": \"%s\", \"age\": %d }", "張三", 23);
上面的代碼中,使用sprintf函數(shù)將字符串格式化為JSON格式的字符串,其中name和age是要填充的數(shù)據(jù),可以根據(jù)實(shí)際情況修改。
typedef struct { char name[20]; int age; } Person; Person person = { "張三", 23 }; char *str = (char*)malloc(1024); sprintf(str, "{ \"name\": \"%s\", \"age\": %d }", person.name, person.age);
如果要將結(jié)構(gòu)體轉(zhuǎn)換成JSON格式字符串,可以通過(guò)sprintf函數(shù)將結(jié)構(gòu)體中的數(shù)據(jù)填充到字符串中。
char *str = (char*)malloc(1024); strcat(str, "{"); strcat(str, "\"name\": \"張三\""); strcat(str, ","); strcat(str, "\"age\": 23"); strcat(str, "}");
另外一種方法是使用字符串拼接函數(shù)strcat逐個(gè)添加數(shù)據(jù),注意要添加逗號(hào)和雙引號(hào)。
#include "cJSON.h" cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 23); char *str = cJSON_Print(root); cJSON_Delete(root);
以上代碼使用cJSON庫(kù)創(chuàng)建一個(gè)JSON對(duì)象,然后通過(guò)cJSON_AddStringToObject和cJSON_AddNumberToObject添加字符串和數(shù)字,最后使用cJSON_Print函數(shù)將其轉(zhuǎn)換成JSON格式字符串。注意要在最后刪除JSON對(duì)象。
以上就是C語(yǔ)言中常用的JSON字符串拼接方法,開(kāi)發(fā)者可以根據(jù)實(shí)際情況選擇適合自己的方法。