C語言是一門非常流行的編程語言,很多項(xiàng)目都是使用C語言實(shí)現(xiàn)的。在處理JSON數(shù)據(jù)時(shí),C語言也有著很好的支持。如果JSON數(shù)據(jù)中包含了對(duì)象數(shù)組,那么如何在C語言中進(jìn)行處理呢?
//以下示例僅為演示方法,具體實(shí)現(xiàn)根據(jù)實(shí)際需求進(jìn)行修改 //json數(shù)據(jù) { "objects":[ { "id":1, "name":"obj1" }, { "id":2, "name":"obj2" } ] } //定義C語言結(jié)構(gòu)體 typedef struct { int id; char name[20]; } Object; //處理json數(shù)據(jù) char *json_data = "..."; //json數(shù)據(jù) json_object *jobj, *jarray, *jobject; int i, arraylen; Object objects[10]; //假設(shè)最多10個(gè)對(duì)象 //解析json數(shù)據(jù) jobj = json_tokener_parse(json_data); //獲取對(duì)象數(shù)組 json_object_object_get_ex(jobj, "objects", &jarray); //獲取對(duì)象數(shù)組長度 arraylen = json_object_array_length(jarray); //遍歷對(duì)象數(shù)組 for (i = 0; i< arraylen; i++) { jobject = json_object_array_get_idx(jarray, i); //解析對(duì)象 objects[i].id = json_object_get_int(json_object_object_get(jobject, "id")); strcpy(objects[i].name, json_object_get_string(json_object_object_get(jobject, "name"))); } //打印解析結(jié)果 for (i = 0; i< arraylen; i++) { printf("id: %d, name: %s\n", objects[i].id, objects[i].name); }
上述代碼通過解析JSON數(shù)據(jù),將對(duì)象數(shù)組中的數(shù)據(jù)解析出來,存儲(chǔ)到了C語言的結(jié)構(gòu)體中。如果要對(duì)JSON數(shù)據(jù)進(jìn)行修改或者新增,可以通過C語言的數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,然后將修改后的數(shù)據(jù)再轉(zhuǎn)為JSON數(shù)據(jù)。