转载

C++ 编写 json 生成器

这个项目介绍 json 和一些常见的 json 库,并用 C++ 编写一个 json 生成器,生成 json 数据,并学习编写测试用例。

json 简介:

json 是 javaScript 的对象表示法,json 用于在服务器和客户端之前传送数据。

json 主要的结构:

名称/值对的集合。 在各种语言中,实现为对象,记录、结构、字典、哈希表,键列表或关联数组。

排序的值列表。 在大多数语言中,实现为数组、向量、列表或序列。

对象:是一个无序的名称/值对的集合。一个对象,开始与 ‘{’ 和以 ‘}‘ 结束。每个名称后跟:和名称/值对是分开的:

C++ 编写 json 生成器

数组:数组值的有序集合。 数组的开头由 '[' 和 ']' 结束, 值用 ’,‘ 分开 :

C++ 编写 json 生成器

值:用双引号的值可以是字符串、数字、或布尔型,或者是一个对象或数组。这些结构可以嵌套:

C++ 编写 json 生成器

字符串:字符串是 Unicode 字符的零个或多个序列,在双引号中,使用反斜线转义。字符表示为一个字符串:

C++ 编写 json 生成器

数字:数字很像 c 和 java 语言的数字类型,但是不是8进制和16进制的:

C++ 编写 json 生成器

常用的 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生成器的开发步骤

原文  http://www.uml.org.cn/c++/201612062.asp
正文到此结束
Loading...