# JStype **Repository Path**: tonyddg/jstype ## Basic Information - **Project Name**: JStype - **Description**: 一个基于C++的json读写库 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-05 - **Last Updated**: 2022-05-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## JStype ### 介绍 JStype是一个基于C++标准输入输出库的简单直观的JSON操作库 可以通过类似javascript的方式快速建立并输出对应的JSON文件 也可读取JSON文件并用类javascript的方式访问读取的JSON文件中的数据 并且还提供了一套读写二进制方式储存的json(bon 有更小的体积与更快的读取速度)的方法 该项目文件使用utf-8编码 使用CMake作为编译工具 ### 使用效果 #### C++代码 ``` C++ JSval a; a["title"] = "The\nGrade\tOf\t\"Student\'"; a["student"][0]["name"] = "abc"; a["student"][0]["is_good"] = true; a["student"][0]["id"] = 114514; a["student"][0]["grade"] = 100.0; a["student"][1]["name"] = "cde"; a["student"][1]["is_good"] = true; a["student"][1]["id"] = 191981; a["student"][1]["grade"] = 80.0; a["student"][2]["name"] = "nes"; a["student"][2]["is_good"] = false; a["student"][2]["id"] = 774514; a["student"][2]["grade"] = 50.0; a["total"] = 3; a["nothing"] = JSval(T_null); JsonWriter::Write("test.json", a, false); ``` #### 对应生成的json ```json { "nothing" : null, "student" : [ { "grade" : 100.000000, "id" : 114514, "is_good" : true, "name" : "abc" }, { "grade" : 80.000000, "id" : 191981, "is_good" : true, "name" : "cde" }, { "grade" : 50.000000, "id" : 774514, "is_good" : false, "name" : "nes" } ], "title" : "The\nGrade\tOf\t\"Student'", "total" : 3 } ``` ### 文件说明 * JStype.h/cpp 定义与实现类javascript的类型 JSval * JStype_bon.h/cpp 定义与实现读写bon相关函数 * JStype_json.h/cpp 定义与实现读写json相关函数 * /example 用于测试的样例 * CMakeLists.txt 编译项目使用的CMake文件 ### 使用注意 * 在本库中,默认 wchar_t 存储的字符使用前16位的unicode编码(不支持emoji等),char 存储的字符使用utf-8编码(windows下默认使用GBK编码),json文件使用utf-8编码,在使用时可以调用库中的 Utf8toUnicode16 与 Unicode16toUtf8 函数进行转换 ### 等待改进的地方 * 更加科学的错误管理 * 其他未发现的bug与可能的不足