JSON是一種非常常用的數據交換格式,眾所周知,C語言與JSON是不太兼容的。雖然有一些第三方庫可以支持用C語言讀寫JSON格式,但使用這些庫需要在代碼中添加大量的函數調用,復雜度較高,不利于代碼的可讀性、可維護性和Debug。在C語言中處理JSON格式數據時,我們可以學習一些排除技巧,使得代碼不需要用到極其復雜的函數調用,達到簡潔、高效地處理JSON格式數據的目的。
//以下是排除技巧的代碼示例 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char json[] = "{\n \"name\":\"apple\",\n \"price\":123,\n \"stock\": true\n}"; //尋找鍵名對應的值 char *p = strstr(json, "\"name\""); if(p != NULL) { p = strstr(p, ":"); if(p != NULL) { p++; while(*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r') { p++; } if(*p == '\"') { //字符串類型 char str[1024]; int i = 0; p++; while(*p != '\"' && *p != '\0' && i< 1023) { str[i++] = *p++; } str[i] = '\0'; printf("name = %s\n", str); } else if(*p >= '0' && *p<= '9') { //數字類型 int num = atoi(p); printf("name = %d\n", num); } else if(strcmp(p, "true") == 0) { //布爾型,true printf("name = true\n"); } else if(strcmp(p, "false") == 0) { //布爾型,false printf("name = false\n"); } } } return 0; }
關于代碼中使用的一些函數,strstr()在字符串中查找指定子串,并返回首次出現的位置;atoi()將字符串轉換為整數;strcmp()比較兩個字符串是否相同,相同時返回0。
以上排除技巧是在使用C語言處理JSON格式數據時的應急方法,當需要處理更為復雜的JSON數據時,還是有必要使用第三方庫來完成。
上一篇c json插入
下一篇python 調整大小寫