头文件什么的都在首篇(json-c学习1) linux c语言解析json数组(纯代码),这里只写一个简单的函数:
238 void PkgBodyArrayFunction(void)
239 {
240 //封装成如下形式的json内容:
241 /*
242 {
243 "loop_number": 1,
244 "sensor_address:1,
245 "body":
246 [
247 {"loop_number":2,"sensor_address":3"},
248 {"loop_number":4,"sensor_address":5"},
249 ]
250 }
251 */
252 json_object *pValue = NULL;
253 json_object *pObjectSerPro = NULL;
254 char msg[400] = {0};
255 int loopNumber = 1;
256 int sensorAddress = 2;
257 SinglePointIdStruct array[2] = {{2,3},{4,5}};
258 //创建json对象
259 pObjectSerPro = json_object_new_object();
260 //添加内容
261 pValue = json_object_new_int(loopNumber);
262 json_object_object_add(pObjectSerPro, LOOP_NUMBER, pValue);
263 pValue = json_object_new_int(sensorAddress);
264 json_object_object_add(pObjectSerPro, SENSOR_ADDRESS, pValue);
265
266 json_object *jarray = json_object_new_array(); //建数组
267 int i = 0;
268 for (i = 0;i < 2; i++)
269 {
270 json_object *pObj = json_object_new_object();
271 pValue = json_object_new_int(array[i].loopNumber);
272 json_object_object_add(pObj, LOOP_NUMBER, pValue);
273 pValue = json_object_new_int(array[i].sensorAddress);
274 json_object_object_add(pObj, SENSOR_ADDRESS, pValue);
275
276 json_object_array_add(jarray, pObj); //将对象加入数组
277 }
278 json_object_object_add(pObjectSerPro, BODY, jarray);
279
280 memset(msg, 0, 400);
281 sprintf(msg, "%s", (char*)(json_object_to_json_string(pObjectSerPro)));
282
283 printf("msg = %s\n", msg);
284
285 }
main函数:
333 int main(void)
334 {
335 char *body = TestBodyFunction();
336 ParsingBodyFunction(body);
337 printf("=====================================================\n");
338 //struct json_object *array = TestArrayFunction();
339 char *array = TestArrayFunction();
340 ParsingArrayFunction(array);
341 printf("=====================================================\n");
342 char *str = "[{\"loop_number\":1, \"sensor_address\":2}]";
343 int len = strlen(str);
344 printf("len = %d\n", len);
345 PkgArrayFunction();
346 printf("=====================================================\n");
347 PkgJsonFunction();
348 printf("=====================================================\n");
349 PkgBodyArrayFunction();
350 printf("=====================================================\n");
351 PkgBodyJsonFuncton();
352 return 0;
353 }
354
355
测试结果: