C語言是一種強大的編程語言,也是目前應用最廣泛的編程語言之一。在許多開發(fā)領域中,如Web開發(fā)和移動應用開發(fā)中,使用JSON(JavaScript Object Notation)格式來處理數(shù)據(jù)是很常見的。解析JSON格式數(shù)據(jù)可以幫助我們快速獲取所需的數(shù)據(jù),而C解析JSON格式的庫也可以方便地實現(xiàn)這一目標。
#include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> #include<stdbool.h> #define JSON_OBJECT_SIZE 5 //JSON對象的最大數(shù)量 typedef struct { char *name; char *value; } JsonKeyValue; typedef struct { JsonKeyValue *objects[JSON_OBJECT_SIZE]; int len; } JsonObject; JsonObject *parseJson(char *jsonStr) { char *token, *last; JsonObject *jsonObject = malloc(sizeof(JsonObject)); while ((token = strtok_r(jsonStr, ",{}", &last))) { if (token[0] == '{') { continue; } char *key = strtok(token, ":"); char *value = strtok(NULL, ""); JsonKeyValue *jsonKeyValue = malloc(sizeof(JsonKeyValue)); jsonKeyValue->name = strdup(key + 1); jsonKeyValue->value = strdup(value + 1); jsonObject->objects[jsonObject->len++] = jsonKeyValue; } return jsonObject; } void printJsonObject(JsonObject *jsonObject) { printf("{\n"); for (int i = 0; i < jsonObject->len; i++) { JsonKeyValue *jsonKeyValue = jsonObject->objects[i]; printf("\t\"%s\": \"%s\",\n", jsonKeyValue->name, jsonKeyValue->value); } printf("}\n"); } int main() { char *jsonStr = "{ \"name\": \"Jack\", \"age\": \"25\", \"city\": \"New York\" }"; JsonObject *jsonObject = parseJson(jsonStr); printJsonObject(jsonObject); return 0; }
上述代碼演示了如何使用C語言解析JSON格式數(shù)據(jù)。首先定義了JsonKeyValue和JsonObject兩個結構體,分別用于表示JSON數(shù)據(jù)中的每個鍵值對和包含多個鍵值對的JSON對象。然后編寫了parseJson函數(shù),該函數(shù)將JSON字符串解析為JsonObject結構體。最后,使用printJsonObject函數(shù)將JsonObject結構體打印為JSON字符串。