在使用C語言解析JSON數據時,需要注意JSON中數字類型的處理方法。JSON中包含的數字類型有整數、浮點數、科學計數法等,C語言可以通過字符串來表示這些數字類型。下面是一個例子:
#include#include #include #include #include "cJSON.h" int main() { char *jsonStr = "{\"num1\": 123, \"num2\": 1.23e4}"; cJSON *root = cJSON_Parse(jsonStr); if (!root) { printf("parse json failed.\n"); return -1; } cJSON *num1 = cJSON_GetObjectItem(root, "num1"); cJSON *num2 = cJSON_GetObjectItem(root, "num2"); printf("num1: %d\n", num1->valueint); printf("num2: %lf\n", num2->valuedouble); cJSON_Delete(root); return 0; }
在上面的例子中,我們使用了第三方庫cJSON,它提供了一系列API用于解析JSON數據。首先,我們需要將JSON字符串解析成一個cJSON對象,然后通過函數cJSON_GetObjectItem獲取JSON對象中的元素。需要注意的是,
- 整數類型可以通過cJSON對象的valueint成員獲取。
- 浮點數類型可以通過cJSON對象的valuedouble成員獲取。
因此,在解析JSON數字類型時,我們需要根據實際情況選擇使用valueint或valuedouble成員來獲取數值。對于科學計數法形式的數字,我們需要使用C語言提供的math庫來進行解析,例如:
char *jsonStr = "{\"num\": 1.23e4}"; double num = atof(cJSON_GetObjectItem(root, "num")->valuestring); printf("num: %lf\n", num);
上述代碼中,我們使用函數atof將JSON中的字符串形式的數字轉換成浮點數類型,從而獲取科學計數法形式數字的值。