这个项目介绍 json 和一些常见的 json 库,并用 C++ 编写一个 json 生成器,生成 json 数据,并学习编写测试用例。
json 简介:
json 是 javaScript 的对象表示法,json 用于在服务器和客户端之前传送数据。
json 主要的结构:
名称/值对的集合。 在各种语言中,实现为对象,记录、结构、字典、哈希表,键列表或关联数组。
排序的值列表。 在大多数语言中,实现为数组、向量、列表或序列。
对象:是一个无序的名称/值对的集合。一个对象,开始与 ‘{’ 和以 ‘}‘ 结束。每个名称后跟:和名称/值对是分开的:
数组:数组值的有序集合。 数组的开头由 '[' 和 ']' 结束, 值用 ’,‘ 分开 :
值:用双引号的值可以是字符串、数字、或布尔型,或者是一个对象或数组。这些结构可以嵌套:
字符串:字符串是 Unicode 字符的零个或多个序列,在双引号中,使用反斜线转义。字符表示为一个字符串:
数字:数字很像 c 和 java 语言的数字类型,但是不是8进制和16进制的:
常用的 c++ json 库:
在 json 的官网中可以看到很多 json 库,我们比较熟悉的是 rapidjson ,jsoncpp ,json++ 。
rapidjson:
跨平台
编译器:Visual Studio、gcc、clang 等
架构:x86、x64、ARM 等
操作系统:Windows、Mac OS X、Linux、iOS、Android 等
容易安装
只有头文件的库。只需把头文件复制至你的项目中。
独立、最小依赖
不需依赖 STL、BOOST 等。
只包含,, ,, ,。
没使用 C++ 异常、RTTI
高性能
使用模版及内联函数去降低函数调用开销。
内部经优化的 Grisu2 及浮点数解析实现。
可选的 SSE2/SSE4.2 支持。
?jsoncpp:
读取和写入的JSON文档
在解析期间,C++ 风格的注释附加到元素
重写 JSON 文档保存原文档
JSON++:
JSON 解析器基于 C++11。
它解析 JSON 格式的字符串和文件,并生成一个代表 JSON 结构的内存树。
JSON 对象映射到标准哈希表、数组、向量。
JSON 类型映射到 c++ 类型。
使用标准类库,不用添加额外的函数库
编写 json 生成器
开发步骤:
编写 json-write.h;
泛型和重载;
核心函数的设计;
编写核心函数;
编写测试用例;
以上就是开发一个json生成器的开发步骤