C++ 编写 json 生成器

这个项目介绍 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生成器的开发步骤,关于详细的文档介绍和代码详解,点击【 C++ 编写 json 生成器】,即可马上查看~

你可能感兴趣的:(C++ 编写 json 生成器)