在 C 語言中解析 JSON 數字,需要使用一些常用的庫和函數。目前比較常用的 JSON 庫有 cJSON 和 jsmn ,兩者都可以用于解析 JSON 數字。
對于 cJSON,可以根據以下代碼進行解析:
{
char* jsonStr = "{ \"num\": 123 }";
cJSON* root = cJSON_Parse(jsonStr);
cJSON* num = cJSON_GetObjectItem(root, "num");
int value = num->valuedouble;
cJSON_Delete(root);
printf("The number is %d\n", value);
}
以上代碼中,首先需要準備一個 JSON 字符串,然后通過 cJSON_Parse 函數將其解析成一個 cJSON 對象。接著通過 cJSON_GetObjectItem 函數獲取 JSON 對象中的 num 鍵的值,也就是這個 JSON 數字。最后用 valuedouble 屬性獲取該數字的實際值,并釋放 cJSON 對象。
對于 jsmn,可以根據以下代碼進行解析:
{
char* jsonStr = "{ \"num\": 123 }";
jsmn_parser parser;
jsmntok_t tokens[128];
jsmn_init(&parser);
int numTokens = jsmn_parse(&parser, jsonStr, strlen(jsonStr), tokens, 128);
int value;
int i = 1;
for (; i< numTokens; i++) {
if (jsoneq(jsonStr, &tokens[i], "num") == 0) {
value = atoi(jsonStr + tokens[i+1].start);
break;
}
}
printf("The number is %d\n", value);
}
以上代碼中,需要用到 jsmn_parser、jsmntok_t、jsmn_init、jsmn_parse 等函數和結構體。首先需要將 JSON 字符串解析成一組 tokens,然后通過循環遍歷 tokens,找到 num 鍵的值,并用 atoi 函數獲取該數字的實際值。