Qt Plugin创建及调用4(元信息metaData)
JSON 与Qt插件的元信息 MetaData
Qt插件的源码中,基本都能见到一个 xxx.json 的文件,这个文件中通常只包含一句:
{
"Keys": [ "yyy" ]
}
我们可以猜到这个文件中的”Keys”应该是指定了与插件相关的关键字。那这个 .json 文件到底是如何起作用的?先来认识一下 JSON 。
JSON是一种存储结构化数据的格式,它有6中基本数据类型,分别是:
- bool 布尔型,取值可以是 true 或 false
- double 数字类型
- string 字符串类型
- array 数组类型
- object 对象类型
- null 空类型
具体可参见 Qt Assistant 中关于”JSON Support in Qt “的介绍。
A simple JSON document encoding a person, his/her age, address and phone numbers could look like:
1. {
2. "FirstName": "John", # FirstName是变量(字段)的名称;John是变量的值
3. "LastName": "Doe",
4. "Age": 43,
5. "Address": {
6. "Street": "Downing Street 10",
7. "City": "London",
8. "Country": "Great Britain"
9. },
10. "Phone numbers": [
11. "+44 1234567",
12. "+44 2345678"
13. ]
14. }
值得一提的是,数组类型的字段在.json文件中赋值时应该用方括号 ‘[’ 和 ‘]’ 括起来,对象类型的字段在赋值时应用花括号 ‘{’ 和 ‘}’ 括起来,普通类型的数据则不需要括。每一个 .json 文件描述了一个 JSON对象,而一个JSON对象中的对象类型字段,又可以看做是一个子JSON对象(JSON对象的嵌套)。
.json在Qt插件中主要用于存储Qt插件的元信息(metaData),在Qt中,有一个专门的类 QJsonObject 来描述一个JSON。
Qt中的JSON相关类
QJsonArray | Encapsulates a JSON array | 封装JSON数组 |
---|---|---|
QJsonDocument | Way to read and write JSON documents | 读取和写入JSON文本的方式 |
QJsonObject | Encapsulates a JSON object | 封装JSON对象 |
QJsonObject::iterator | QJsonObject::iterator class provides an STL-style non-const iterator for QJsonObject | JSON迭代器 |
QJsonObject::const_iterator | QJsonObject::const_iterator class provides an STL-style const iterator for QJsonObject | JSON const迭代器 |
QJsonParseError | Used to report errors during JSON parsing | 用于报告JSON解析期间的错误 |
QJsonValue | Encapsulates a value in JSON | 封装JSON中的值 |