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

c 解析json 代碼

林玟書1年前8瀏覽0評論

在C語言中,解析JSON常常使用第三方庫來實現,其中比較常用的有cJSON和Jansson兩個庫。

//使用cJSON解析JSON字符串
#include "cJSON.h"
#include <stdio.h>
int main()
{
char* jsonstr = "{\"name\":\"張三\",\"age\":20,\"scores\":[85,90,95]}";
cJSON* root = cJSON_Parse(jsonstr);
if (root == NULL) {
printf("cJSON_Parse error\n");
return -1;
}
cJSON* name = cJSON_GetObjectItem(root, "name");
cJSON* scores = cJSON_GetObjectItem(root, "scores");
if (name != NULL) {
printf("name:%s\n", name->valuestring);
}
if (scores != NULL && cJSON_IsArray(scores)) {
for (int i = 0; i < cJSON_GetArraySize(scores); i++) {
cJSON* score = cJSON_GetArrayItem(scores, i);
printf("score%d:%d\n", i+1, score->valueint);
}
}
cJSON_Delete(root);
return 0;
}

以上代碼使用cJSON庫解析了一個JSON字符串,并將其解析成cJSON對象。通過cJSON_GetObjectItem函數獲取JSON對象中的字段,通過cJSON_GetArrayItem和cJSON_GetArraySize函數獲取JSON數組中的元素,并可以根據需要進行處理。

//使用Jansson解析JSON字符串
#include <jansson.h>
#include <stdio.h>
int main()
{
char* jsonstr = "{\"name\":\"張三\",\"age\":20,\"scores\":[85,90,95]}";
json_error_t error;
json_t* root = json_loads(jsonstr, 0, &error);
if (root == NULL) {
printf("%s:%d:%s\n", error.source, error.line, error.text);
return -1;
}
json_t* name = json_object_get(root, "name");
json_t* scores = json_object_get(root, "scores");
if (name != NULL) {
printf("name:%s\n", json_string_value(name));
}
if (scores != NULL && json_is_array(scores)) {
size_t index;
json_t* score;
json_array_foreach(scores, index, score) {
printf("score%lu:%d\n", index+1, json_integer_value(score));
}
}
json_decref(root);
return 0;
}

以上代碼使用Jansson庫解析了同樣的JSON字符串,并將其解析成json_t對象。通過json_object_get函數獲取JSON對象中的字段,通過json_array_foreach函數獲取JSON數組中的元素,并可以根據需要進行處理。

總而言之,無論使用哪個第三方庫,解析JSON字符串的過程都類似,而具體實現則需要根據不同的庫進行適當調整。