頭文件什麼的都在首篇(json-c學習1) linux c語言解析json數組(純代碼),這裏只寫一個簡單的函數:
334 void ParsingBodyJsonFuncton(void)
335 {
336 //封裝成如下形式的json內容:
337 /*
338 {
339 "loop_number": 1,
340 "sensor_address:1,
341 "body":
342 {
343 "loop_number":2,"sensor_address":3","module_id":4
344 }
345 }
346 */
347 int ln = 0;
348 int sd = 0;
349 int lnn = 0;
350 int sdd = 0;
351 int mi = 0;
352 char *str = "{\"loop_number\":1, \"sensor_address\":1, \"body\":{\"loop_number\":2, \"sensor_address\":3, \"module_id\" :4}}";
353 json_object *pstObj = NULL;
354 json_object *sonPstObj = NULL;
355 pstObj = json_tokener_parse(str);
356 if (NULL == pstObj)
357 {
358 printf("%s : json_tokener_parse failed.\n", __FUNCTION__);
359 }
360 else
361 {
362 json_object_object_foreach(pstObj, key1, val1)
363 {
364 if (0 == strcmp(key1, LOOP_NUMBER))
365 {
366 ln = json_object_get_int(val1);
367 printf("ln = %d\n", ln);
368 }
369 else if (0 == strcmp(key1, SENSOR_ADDRESS))
370 {
371 sd = json_object_get_int(val1);
372 printf("sd = %d\n", sd);
373 }
374 else if (0 == strcmp(key1, BODY))
375 {
376 sonPstObj = json_tokener_parse(json_object_get_string(val1));
377 if (NULL == sonPstObj)
378 {
379 printf("parsing failed!\n");
380 }
381 else
382 {
383 json_object_object_foreach(sonPstObj, key2, val2)
384 {
385 if (0 == strcmp(key2, LOOP_NUMBER))
386 {
387 lnn = json_object_get_int(val2);
388 printf("lnn = %d\n", lnn);
389 }
390 else if (0 == strcmp(key2, SENSOR_ADDRESS))
391 {
392 sdd = json_object_get_int(val2);
393 printf("sdd = %d\n", sdd);
394 }
395 else if (0 == strcmp(key2, MODULE_ID))
396 {
397 mi = json_object_get_int(val2);
398 printf("mi = %d\n", mi);
399 }
400 }
401 }
402 }
403 }
404 }
405 }
main函數:
407 int main(void)
408 {
409 char *body = TestBodyFunction();
410 ParsingBodyFunction(body);
411 printf("=====================================================\n");
412 //struct json_object *array = TestArrayFunction();
413 char *array = TestArrayFunction();
414 ParsingArrayFunction(array);
415 printf("=====================================================\n");
416 char *str = "[{\"loop_number\":1, \"sensor_address\":2}]";
417 int len = strlen(str);
418 printf("len = %d\n", len);
419 PkgArrayFunction();
420 printf("=====================================================\n");
421 PkgJsonFunction();
422 printf("=====================================================\n");
423 PkgBodyArrayFunction();
424 printf("=====================================================\n");
425 PkgBodyJsonFuncton();
426 printf("=====================================================\n");
427 ParsingBodyJsonFuncton();
428 return 0;
429 }