<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ExjsonC/C++ 高性能 JSON 解析庫

          聯(lián)合創(chuàng)作 · 2023-09-21 20:09

          C語言JSON解析庫:Exjson

          什么是Exjson?

          Exjson是一款高性能的基于Flex & Bison的 JSON 解析器,Xserver引擎自帶,其他需要使用的只需要引入幾個(gè)頭文件和源文件即可

          Exjson適應(yīng)場合

          Exjson適合于在需要在底層C語言或者C++語言層面使用 JSON 功能的場景。目前大部分接口使用的都是 JSON 格式傳輸,后面增加 xml解析庫

          注意

          Exjson支持注釋,Exjson中注釋以 # 或者// 開頭,一直延續(xù)到行尾,如下是合格的 Exjson格式

          {
              "name": "Exjson", // 名字:Exjson
              "version": "1.0", # 版本號
              "platform": [ "MacOSX", "Linux", "Windows" ]
          }

          APIs

          // 生成一個(gè)EXJSON對象
          EXJSON_API EXJSON * INIT_EXJSON();
          
          // 生成一個(gè) string: long int 的鍵值對
          EXJSON_API int add_object_int(EXJSON *exjson, char *key, long val);
          
          // 生成一個(gè) string: double 的鍵值對
          EXJSON_API int add_object_double(EXJSON *exjson, char *key, double val);
          
          // 生成一個(gè) string : string 的鍵值對
          EXJSON_API int add_object_string(EXJSON *exjson, char *key, char *val);
          
          // 生成一個(gè) string: {} 的鍵值對
          EXJSON_API int add_object_object(EXJSON *exjson, char *key, void *val);
          
          // 生成一個(gè) string: [] 的鍵值對
          EXJSON_API int add_object_array(EXJSON *exjson, char *key, void *val);
          // 上面添加方法的一個(gè)通用函數(shù)
          EXJSON_API int add_object_ptr(EXJSON *exjson, char *key, void *val, unsigned char val_type);
          
          // 生成一個(gè) long int 的一個(gè)數(shù)組元素
          EXJSON_API int add_array_int(EXJSON *exjson, long val);
          
          // 生成一個(gè) double 的一個(gè)數(shù)組元素
          EXJSON_API int add_array_double(EXJSON *exjson, double val);
          
          // 生成一個(gè) string 的一個(gè)數(shù)組元素
          EXJSON_API int add_array_string(EXJSON *exjson, char *val);
          
          // 生成一個(gè) 對象{} 的一個(gè)數(shù)組元素
          EXJSON_API int add_array_object(EXJSON *exjson, void *val);
          
          // 生成一個(gè) 數(shù)組的 的一個(gè)數(shù)組元素
          EXJSON_API int add_array_array(EXJSON *exjson, void *val);
          // 上面方法的通用函數(shù)
          EXJSON_API int add_array_ptr(EXJSON *exjson, void *val, unsigned char val_type);
          
          // 打印 EXJSON 信息
          PRINT_EXJSON(exjson);
          
          // 從 EXJSON結(jié)構(gòu)中獲取數(shù)據(jù)
          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結(jié)構(gòu)
          EXJSON_API extern EXJSON *decode_json(char *json_string);
          // EXJSON結(jié)構(gòu)解碼為JSON字符串
          EXJSON_API char *encode_json(EXJSON *exjson);
          // 使用完畢后,需要釋放內(nèi)存
          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"
                                      "}");
          	// 返回的字符串因?yàn)榉峙淞藘?nèi)存,需要手動(dòng)釋放
              char *str = encode_json(v);
              printf("%s", str);
              free(str);
              destroy_exjson(v);
              return 0;
          }
          瀏覽 16
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本aaa在线观看 | 成人免费视频 国产免费 | 欧美日韩国产中文字幕 | 黑人大鸡吧操美女大逼 | 日本手机黄色视频 |