Exjson C/C++ 高性能 JSON 解析库开源项目

我要开发同款
匿名用户2019年05月10日
36阅读
开发技术C/C++
所属分类Web应用开发、JSON/BSON开发包
授权协议LGPL

作品详情

C语言JSON解析库:Exjson什么是Exjson?

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;}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论