Json 语法是 JavaScript 语法的子集,是 Key : value 的模式。
Json (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
比如下面就是一个 json 对象,里面包含了字符串、整数、浮点数、普通数组、对象、 对象数组,从中可以窥探到 Json 的语法。Json中key值都是" "号的字符类型,value值中 { } 表示是对象、[ ] 表示的是数组、" "表示的是字符串、null表示的时空,不能用"null"表示。
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。cJSON库使解析和组装JSON数据包的工作便会变得简单的多,下面是cJSON中CJSON结构。(cJSON是采用C语言编写的)
next、prev 用于遍历数组或对象链的 前向 后向 链表指针。child 指向数组或对象的 孩子节点。type 是 value 的类型。valuestring 是字符串值。valueint 是整数值;。valuedouble 是浮点数值。string 是 key 的名字。
RapidJSON是腾讯开源的一个高效的C++ JSON解析器及生成器,它是只有头文件的C++库。RapidJSON是跨平台的,支持Windows, Linux, Mac OS X及iOS, Android。
RapidJSON特点
- 小而全:它同时支持SAX和DOM风格的API,SAX解析器只有约500行代码。(Document Object Model ,DOM 文档对象模型 )
- 快:它的性能可与strlen()相比,可支持SSE2/SSE4.2加速,使用模版及内联函数去降低函数调用开销。
- 独立:它不依赖于BOOST等外部库,它甚至不依赖于STL。
- 对内存友好:在大部分32/64位机器上,每个JSON值只占16字节(除字符串外),它预设使用一个快速的内存分配器,令分析器可以紧凑地分配内存。
每个JSON值都储存为Value类,而Document类则表示整个DOM,它存储了一个DOM 树的根Value。RapidJSON的所有公开类型及函数都在rapidjson命名空间中。
WRITE-BUG研发团队衷心希望【WRITE-BUG数字空间】可以给每位同学一个属于自己的秘密空间,同时祝愿大家在“公开圈子”世界里,遇见志同道合的伙伴们,因为我们与大家一样,都曾孤独前行着。