ExjsonC/C++ 高性能 JSON 解析库
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_API EXJSON * INIT_EXJSON(); // 生成一个 string: long int 的键值对 EXJSON_API int add_object_int(EXJSON *exjson, char *key, long val); // 生成一个 string: double 的键值对 EXJSON_API int add_object_double(EXJSON *exjson, char *key, double val); // 生成一个 string : string 的键值对 EXJSON_API int add_object_string(EXJSON *exjson, char *key, char *val); // 生成一个 string: {} 的键值对 EXJSON_API int add_object_object(EXJSON *exjson, char *key, void *val); // 生成一个 string: [] 的键值对 EXJSON_API int add_object_array(EXJSON *exjson, char *key, void *val); // 上面添加方法的一个通用函数 EXJSON_API int add_object_ptr(EXJSON *exjson, char *key, void *val, unsigned char val_type); // 生成一个 long int 的一个数组元素 EXJSON_API int add_array_int(EXJSON *exjson, long val); // 生成一个 double 的一个数组元素 EXJSON_API int add_array_double(EXJSON *exjson, double val); // 生成一个 string 的一个数组元素 EXJSON_API int add_array_string(EXJSON *exjson, char *val); // 生成一个 对象{} 的一个数组元素 EXJSON_API int add_array_object(EXJSON *exjson, void *val); // 生成一个 数组的 的一个数组元素 EXJSON_API int add_array_array(EXJSON *exjson, void *val); // 上面方法的通用函数 EXJSON_API int add_array_ptr(EXJSON *exjson, void *val, unsigned char val_type); // 打印 EXJSON 信息 PRINT_EXJSON(exjson); // 从 EXJSON结构中获取数据 EXJSON_API void *exjson_get_val_from_key(EXJSON *exjson, char *key); EXJSON_API void *exjson_get_val_from_index(EXJSON *exjson, int index); // 编码JSON字符串为EXJSON结构 EXJSON_API extern EXJSON *decode_json(char *json_string); // EXJSON结构解码为JSON字符串 EXJSON_API char *encode_json(EXJSON *exjson); // 使用完毕后,需要释放内存 EXJSON_API void destroy_exjson(EXJSON *exjson);
示例
#include <stdio.h> #include "exjson.h" int main(int argc, 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); return 0; }
评论
simdjson高性能 JSON 解析库
simdjson是每秒可解析千兆字节的高性能JSON解析库。simdjson使用 SIMD指令和microparallel算法来解析JSON,比RapidJSON快4倍,比 JSONforModern
simdjson高性能 JSON 解析库
0
commons.json高性能JSON库
commons.json是Java的序列化与反序列化JSON格式的类库,commons.json非常轻量,且性能比Jackson和Gson好,并且支持缓存。示例:JavaObjecttoJSON:St
commons.json高性能JSON库
0
Brief-JSON轻量级 JSON 解析库
轻量级JSON解析库BriefJSON,追求以最少的代码完成JSON解析及JAVA对象的序列化和反序列化。用户只需把代码文件拷贝到自己的项目中即可使用。采用模块化设计,将JSON序列化与JAVABea
Brief-JSON轻量级 JSON 解析库
0
ejson轻量简单的 C++ JSON 解析库
介绍该库为轻量级的c++json解析与构造库,源码很短,适合学习,觉得不错的点个star。提供了的功能:json字符串解析为c++对象(JSONArray和JSONObject)c++对象中获取key
ejson轻量简单的 C++ JSON 解析库
0
lkjsonDelphi的JSON解析库
lkjson(JSONdelphilibrary)是Delphi实现的JSON数据格式和对象结构,主要特点是轻量级以及快速。
lkjsonDelphi的JSON解析库
0