• JSON 下 -- jansson 示例


    JSON 下 —— jansson 示例

    参考网址:

    jansson 库的下载:

    http://www.digip.org/jansson/

    安装jansson 步骤:

    http://blog.csdn.net/lz909/article/details/46042979

    jansson 手册:

    https://jansson.readthedocs.io/en/latest/index.html

    API 介绍:

     http://jansson.readthedocs.io/en/2.2/apiref.html#json_error_t

    vim source.c

      1 #include<stdio.h>
      2 #include<string.h>
      3 #include<jansson.h>
      4 
      5 #define FILE_PATH         "./temp.txt"
      6 #define MAX_NUM            5
      7 
      8 typedef struct _JSON_ITEM_INFO
      9 {
     10     json_t* string;
     11     json_t* value;
     12 }JSON_ITEM_INFO;
     13 
     14 
     15 void save_info_to_file()
     16 {
     17    json_t* root = NULL;
     18    json_t* item_1 = NULL;
     19    json_t* item_2 = NULL;
     20    json_t* item_3 = NULL;
     21    json_t* array = NULL;
     22     
     23    char* s_repon = NULL;
     24    
     25    root = json_object();
     26    item_1 = json_object();
     27    item_2 = json_object();
     28    item_3 = json_object(); 
     29    array = json_array();
     30   
     31    json_object_set_new(item_1,"name",json_string("xiaopeng"));
     32    json_object_set_new(item_1,"age",json_integer(12));
     33    json_array_append_new(array,item_1);
     34 
     35    json_object_set_new(item_2,"name",json_string("xiaoming"));
     36    json_object_set_new(item_2,"age",json_integer(8));
     37    json_array_append_new(array,item_2);
     38 
     39    json_object_set_new(item_3,"name",json_string("xiaohong"));
     40    json_object_set_new(item_3,"age",json_integer(22));
     41    json_array_append_new(array,item_3);
     42    
     43    json_object_set_new(root,"root",array);
     44 
     45    json_dump_file(root, FILE_PATH,JSON_PRESERVE_ORDER);
     46 
     47    s_repon = json_dumps(root,JSON_INDENT(0));
     48 
     49    printf("s_repon = %s 
    ",s_repon);
     50    free(s_repon);
     51 
     52    printf("size = %d 
    ", (int)json_array_size(array));
     53    
     54    if(root)
     55    {
     56       json_delete(root);
     57    }
     58    if(array)
     59    {
     60       json_delete(array);
     61    }
     62 }
     63 
     64 void get_file_info()
     65 {
     66    int i = 0;
     67     
     68    json_t* root = NULL;
     69    json_t* array = NULL;
     70    json_error_t error;
     71    char* s_repon = NULL;
     72    
     73    json_t* add_item_1 = NULL;
     74    char* s_get_add_item = NULL;
     75    
     76    json_t* rec_table[MAX_NUM] = {0};
     77    
     78    JSON_ITEM_INFO person[MAX_NUM];
     79    memset(person,0,sizeof(person));
     80    
     81    //get the info from file;
     82    root = json_load_file(FILE_PATH, 0, &error);
     83    if(!json_is_object(root))
     84    {
     85         printf("%s,%d
    ",__FILE__,__LINE__);
     86    }
     87    s_repon = json_dumps(root,JSON_INDENT(0));
     88    printf("s_repon = %s 
    ",s_repon);
     89    free(s_repon);
     90 
     91    array = json_object_get(root,"root");
     92    if(!json_is_array(array))
     93    {
     94         printf("%s,%d
    ",__FILE__,__LINE__);
     95    }
     96    
     97    for(i = 0; i < MAX_NUM ;i++)
     98    {
     99        rec_table[i] = json_array_get(array,i);
    100        if(!json_is_object(rec_table[i]))
    101        {
    102             printf("%s,%d
    ",__FILE__,__LINE__);
    103        }
    104        person[i].string = json_object_get(rec_table[i],"name");
    105        printf("person[%d].string = %s 
    ",i,json_string_value(person[i].string));
    106        person[i].value = json_object_get(rec_table[i],"age");
    107        printf("person[%d].value = %d 
    ",i,(int)json_integer_value(person[i].value));
    108    }
    109    
    110     //add the new item;
    111     add_item_1 = json_object(); 
    112     json_object_set_new(add_item_1,"name",json_string("zhangsan"));
    113     json_object_set_new(add_item_1,"age",json_integer(30));
    114     
    115    if(json_array_size(array) >= MAX_NUM)
    116    {
    117         //remove the top item;
    118         json_array_remove(array,0);
    119         
    120    }    
    121     json_array_append_new(array,add_item_1);
    122 
    123     //write the new array to the file;
    124     json_dump_file(root, FILE_PATH,JSON_PRESERVE_ORDER);
    125 
    126     //dump the date and print
    127     s_get_add_item = json_dumps(root,JSON_INDENT(0));
    128 
    129     printf("s_get_add_item = %s 
    ",s_get_add_item);
    130     free(s_get_add_item);
    131 
    132 }
    133 
    134 int main()
    135 {
    136     save_info_to_file(); //这里将数据保存在文件 FILE_PATH 里;
    137     get_file_info();     // 这里将文件 FILE_PATH 数据读取出来;
    138 
    139     return 0;
    140 }

    编译:

    gcc source.c -ljansson

    执行结果:

     有什么错漏,欢迎指出!!!

  • 相关阅读:
    json
    封装PDO
    PDO
    jquery练习
    jquery包
    jquery
    租房子 多条件查询
    查询
    新闻修改处理页面
    新闻添加数据
  • 原文地址:https://www.cnblogs.com/computer1-2-3/p/7247497.html
Copyright © 2020-2023  润新知