Exjson是一款高性能的基于Flex&Bison的 JSON 解析器,Xserver引擎自带,其他需要使用的只需要引入几个头文件和源文件即可
Exjson适应场合Exjson适合于在需要在底层C语言或者C++语言层面使用 JSON 功能的场景。目前大部分接口使用的都是 JSON 格式传输,后面增加 xml解析库
注意Exjson支持注释,Exjson中注释以 # 或者// 开头,一直延续到行尾,如下是合格的 Exjson格式
{"name":"Exjson",//名字:Exjson"version":"1.0",#版本号"platform":["MacOSX","Linux","Windows"]}APIs//生成一个EXJSON对象EXJSON_APIEXJSON*INIT_EXJSON();//生成一个string:longint的键值对EXJSON_APIintadd_object_int(EXJSON*exjson,char*key,longval);//生成一个string:double的键值对EXJSON_APIintadd_object_double(EXJSON*exjson,char*key,doubleval);//生成一个string:string的键值对EXJSON_APIintadd_object_string(EXJSON*exjson,char*key,char*val);//生成一个string:{}的键值对EXJSON_APIintadd_object_object(EXJSON*exjson,char*key,void*val);//生成一个string:[]的键值对EXJSON_APIintadd_object_array(EXJSON*exjson,char*key,void*val);//上面添加方法的一个通用函数EXJSON_APIintadd_object_ptr(EXJSON*exjson,char*key,void*val,unsignedcharval_type);//生成一个longint的一个数组元素EXJSON_APIintadd_array_int(EXJSON*exjson,longval);//生成一个double的一个数组元素EXJSON_APIintadd_array_double(EXJSON*exjson,doubleval);//生成一个string的一个数组元素EXJSON_APIintadd_array_string(EXJSON*exjson,char*val);//生成一个对象{}的一个数组元素EXJSON_APIintadd_array_object(EXJSON*exjson,void*val);//生成一个数组的的一个数组元素EXJSON_APIintadd_array_array(EXJSON*exjson,void*val);//上面方法的通用函数EXJSON_APIintadd_array_ptr(EXJSON*exjson,void*val,unsignedcharval_type);//打印EXJSON信息PRINT_EXJSON(exjson);//从EXJSON结构中获取数据EXJSON_APIvoid*exjson_get_val_from_key(EXJSON*exjson,char*key);EXJSON_APIvoid*exjson_get_val_from_index(EXJSON*exjson,intindex);//编码JSON字符串为EXJSON结构EXJSON_APIexternEXJSON*decode_json(char*json_string);//EXJSON结构解码为JSON字符串EXJSON_APIchar*encode_json(EXJSON*exjson);//使用完毕后,需要释放内存EXJSON_APIvoiddestroy_exjson(EXJSON*exjson);示例#include<stdio.h>#include"exjson.h"intmain(intargc,char*argv[]){EXJSON*v=decode_json("{\n""\"b\":100,\n""\"a\":{\n""\"a\":\"b\"\n""}\n""}");//返回的字符串因为分配了内存,需要手动释放char*str=encode_json(v);printf("%s",str);free(str);destroy_exjson(v);return0;}
评论