JSON是一種輕量級的數(shù)據(jù)格式,經(jīng)常用于前后端數(shù)據(jù)交互。c語言作為一種高效的編程語言,被廣泛應(yīng)用于嵌入式、系統(tǒng)編程等領(lǐng)域。在c語言中,如何解析JSON數(shù)據(jù)呢?本文將會介紹如何使用循環(huán)方式解析JSON。
首先需要明確JSON的基本語法,具體可參考以下示例:
{ "name":"Tom", "age":20, "hobby":[ "reading", "running" ] }
以上是一個完整的JSON數(shù)據(jù),由花括號括起來。鍵值對之間使用冒號分隔,每對鍵值對之間使用逗號分隔。值可以是字符串、數(shù)字、布爾型或數(shù)組。
下面通過c語言循環(huán)方式解析以上JSON數(shù)據(jù):
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char json[] = "{\"name\":\"Tom\",\"age\":20,\"hobby\":[\"reading\",\"running\"]}"; char name[50], hobby[2][50]; //定義變量存儲JSON數(shù)據(jù) int age, i; char *p = json; p = strchr(p, ':') + 2; //跳過第一個鍵值對的冒號和引號 sscanf(p, "%[^\"]", name); //讀取name鍵對應(yīng)的值(字符串類型) printf("Name: %s\n", name); p = strchr(p, ':') + 1; //跳過age鍵的冒號 sscanf(p, "%d", &age); //讀取age鍵對應(yīng)的值(整型) printf("Age: %d\n", age); p = strchr(p, '[') + 1; //跳過hobby鍵的左中括號 sscanf(p, "%[^,]", hobby[0]); //讀取hobby數(shù)組中第一個字符串 printf("Hobby1: %s\n", hobby[0]); p = strchr(p, ',') + 2; //跳過第一個字符串后面的引號和逗號 sscanf(p, "%[^]]", hobby[1]); //讀取hobby數(shù)組中第二個字符串 printf("Hobby2: %s\n", hobby[1]); return 0; }
以上代碼通過查找鍵值對的冒號、引號、逗號等符號,實現(xiàn)了對JSON數(shù)據(jù)中不同類型的值的解析。初學(xué)者可以逐行分析以上代碼,加深對循環(huán)解析JSON的理解。