欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 提取json里的內(nèi)容

榮姿康2年前7瀏覽0評論

JSON是一種輕量級的數(shù)據(jù)交互格式,常見于Web應用中。在C語言中,我們可以使用第三方庫cJSON來解析和提取JSON數(shù)據(jù)中的內(nèi)容。

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main() {
char *json_str = "{\"name\":\"張三\",\"age\":18,\"scores\":[75,85,90]}";
cJSON *root = cJSON_Parse(json_str);
if (!root) {
printf("Error before: %s\n", cJSON_GetErrorPtr());
return -1;
}
cJSON *name = cJSON_GetObjectItem(root, "name");
if (!cJSON_IsString(name) || name->valuestring == NULL) {
printf("Error: name is not a string\n");
cJSON_Delete(root);
return -1;
}
cJSON *age = cJSON_GetObjectItem(root, "age");
if (!cJSON_IsNumber(age)) {
printf("Error: age is not a number\n");
cJSON_Delete(root);
return -1;
}
cJSON *scores = cJSON_GetObjectItem(root, "scores");
if (!cJSON_IsArray(scores)) {
printf("Error: scores is not an array\n");
cJSON_Delete(root);
return -1;
}
printf("name: %s\n", name->valuestring);
printf("age: %d\n", age->valueint);
for (int i = 0; i< cJSON_GetArraySize(scores); i++) {
cJSON *score = cJSON_GetArrayItem(scores, i);
if (!cJSON_IsNumber(score)) {
printf("Error: score[%d] is not a number\n", i);
cJSON_Delete(root);
return -1;
}
printf("score[%d]: %d\n", i, score->valueint);
}
cJSON_Delete(root);
return 0;
}

首先,我們在代碼中定義了一個JSON字符串json_str,其中包含了一個nameagescores三個屬性。接著,我們通過Parse函數(shù)將JSON字符串解析為一個對象,如果解析失敗,則返回錯誤信息。

我們可以使用GetObjectItem函數(shù)根據(jù)屬性名稱獲取屬性值,并判斷其類型是否正確,然后使用valuestringvalueint獲取字符串或整數(shù)值。對于scores屬性,由于它是一個數(shù)組,我們需要使用GetArraySize獲取數(shù)組長度,然后使用GetArrayItem遍歷數(shù)組,獲取每個數(shù)組元素的值。

最后,我們需要使用Delete函數(shù)來釋放對象的內(nèi)存資源。