JsonDocument Class
class Visindigo::Utility::JsonDocument此类在VIJsonConfig的基础上增加了一种允许存在默认值的配置文件的处理方式。. 详情...
| 头文件: | #include <JsonDocument> |
| 自以下版本: | Visindigo 0.10.0 |
公开成员函数
(自 Visindigo 0.13.0 引入) | JsonDocument() |
(自 Visindigo 0.13.0 引入) | JsonDocument(const QString &configPath, const QString &defaultConfigPath) |
(自 Visindigo 0.13.0 引入) | ~JsonDocument() |
(自 Visindigo 0.13.0 引入) bool | contains(const QString &key) |
(自 Visindigo 0.13.0 引入) QList<Visindigo::Utility::JsonConfig> | getArray(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | getBool(const QString &key = "") |
(自 Visindigo 0.13.0 引入) double | getDouble(const QString &key = "") |
(自 Visindigo 0.13.0 引入) qint64 | getInt(const QString &key = "") |
(自 Visindigo 0.13.0 引入) Visindigo::Utility::JsonConfig | getObject(const QString &key = "") |
(自 Visindigo 0.13.0 引入) QString | getString(const QString &key = "") |
(自 Visindigo 0.13.0 引入) QJsonValue | getValue(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | isArray(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | isBool(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | isDouble(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | isEmpty(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | isInt(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | isNull(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | isObject(const QString &key = "") |
(自 Visindigo 0.13.0 引入) bool | isString(const QString &key = "") |
(自 Visindigo 0.13.0 引入) QStringList | keys(const QString &key = "") |
(自 Visindigo 0.13.0 引入) QJsonParseError | load(const QString &configPath = "", const QString &defaultConfigPath = "", uchar *whichError = nullptr, bool configAutoCreate = true) |
(自 Visindigo 0.13.0 引入) void | save() |
(自 Visindigo 0.13.0 引入) void | setArray(const QString &key, const QList<Visindigo::Utility::JsonConfig> &value) |
(自 Visindigo 0.13.0 引入) void | setBool(const QString &key, bool value) |
(自 Visindigo 0.13.0 引入) void | setDouble(const QString &key, double value) |
(自 Visindigo 0.13.0 引入) void | setInt(const QString &key, qint64 value) |
(自 Visindigo 0.13.0 引入) void | setObject(const QString &key, const Visindigo::Utility::JsonConfig &value) |
(自 Visindigo 0.13.0 引入) void | setString(const QString &key, const QString &value) |
(自 Visindigo 0.13.0 引入) void | setValue(const QString &key, const QJsonValue &value) |
(自 Visindigo 0.13.0 引入) Visindigo::Utility::JsonValueRef | operator[](const QString &key) |
详细说明
VIJsonDocument是VIJsonConfig的功能扩展,从本质上讲,VIJsonDocument内包含了两个VIJsonConfig对象, 一个是默认配置,一个是“当前”配置。两个配置对应的实际Json文档都需要手动指定,在读取配置时,如果当前配置中 没有某个配置项的值,那么会尝试从默认配置中读取,如果默认配置中也没有,那么返回一个空值。
这也意味着,在大规模读写中,VIJsonDocument的性能会比VIJsonConfig差一些,因此在不需要默认配置的情况下, 建议使用VIJsonConfig。对于Visindigo本身而言,VIJsonDocument只用在VIPackage中,用于提供一种 在“用户破坏了配置文件”时的内部恢复机制。
VIJsonDocument的配置文件路径是在构造函数中指定的,也可以在load()时现场指定,如果两者都指定了,那么load()中 指定的路径会覆盖构造函数中的路径。请注意,调用load()函数时,除非加载失败,否则会立即覆盖当前配置。
VIJsonDocument禁止拷贝和移动,因为设计上不希望(也建议用户不要)令一组配置文件被多个对象读写,这样会导致不可预知的结果。
另请参阅 JsonConfig.
成员函数文档
[since Visindigo 0.13.0] JsonDocument::JsonDocument()
构造一个空的VIJsonDocument对象。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] JsonDocument::JsonDocument(const QString &configPath, const QString &defaultConfigPath)
构造一个VIJsonDocument对象。 configPath 配置文件路径。 defaultConfigPath 默认配置文件路径。
这个 function 从 Visindigo 0.13.0 开始支持。
[noexcept, since Visindigo 0.13.0] JsonDocument::~JsonDocument()
析构VIJsonDocument对象。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::contains(const QString &key)
判断指定键是否存在。 key 键的路径。
此函数会判断指定键是否存在,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QList<Visindigo::Utility::JsonConfig> JsonDocument::getArray(const QString &key = "")
获取指定键的数组。 key 键的路径。
此函数会返回指定键的数组,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空数组。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::getBool(const QString &key = "")
获取指定键的布尔值。 key 键的路径。
此函数会返回指定键的布尔值,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] double JsonDocument::getDouble(const QString &key = "")
获取指定键的浮点数值。 key 键的路径。
此函数会返回指定键的浮点数值,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回0.0。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] qint64 JsonDocument::getInt(const QString &key = "")
获取指定键的整数值。 key 键的路径。
此函数会返回指定键的整数值,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回0。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] Visindigo::Utility::JsonConfig JsonDocument::getObject(const QString &key = "")
获取指定键的对象。 key 键的路径。
此函数会返回指定键的对象,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空对象。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QString JsonDocument::getString(const QString &key = "")
获取指定键的字符串值。 key 键的路径。
此函数会返回指定键的字符串值,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空字符串。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QJsonValue JsonDocument::getValue(const QString &key = "")
获取指定键的值。 key 键的路径。
此函数会返回指定键的值,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空值。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::isArray(const QString &key = "")
判断指定键的值是否为数组。 key 键的路径。
此函数会判断指定键的值是否为数组,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::isBool(const QString &key = "")
判断指定键的值是否为布尔值。 key 键的路径。
此函数会判断指定键的值是否为布尔值,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::isDouble(const QString &key = "")
判断指定键的值是否为浮点数。 key 键的路径。
此函数会判断指定键的值是否为浮点数,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::isEmpty(const QString &key = "")
判断指定键的值是否为空。 key 键的路径。
此函数会判断指定键的值是否为空,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回true。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::isInt(const QString &key = "")
判断指定键的值是否为整数。 key 键的路径。
此函数会判断指定键的值是否为整数,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::isNull(const QString &key = "")
判断指定键的值是否为null。 key 键的路径。
此函数会判断指定键的值是否为null,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回true。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::isObject(const QString &key = "")
判断指定键的值是否为对象。 key 键的路径。
此函数会判断指定键的值是否为对象,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool JsonDocument::isString(const QString &key = "")
判断指定键的值是否为字符串。 key 键的路径。
此函数会判断指定键的值是否为字符串,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QStringList JsonDocument::keys(const QString &key = "")
获取配置文件中的所有键。 key 键的路径。
此函数会返回指定路径下的所有键,如果路径为空,则返回根键。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QJsonParseError JsonDocument::load(const QString &configPath = "", const QString &defaultConfigPath = "", uchar *whichError = nullptr, bool configAutoCreate = true)
从配置文件中加载配置。 configPath 配置文件路径。 defaultConfigPath 默认配置文件路径。 whichError 指示是谁加载失败,1表示默认配置,2表示当前配置,0表示成功。 configAutoCreate 是否自动创建配置文件,默认为true。当默认配置文件读入成功但当前配置文件读入失败时, 会自动在指定位置创建当前配置文件。
此函数会从指定的配置文件中加载配置,如果加载失败,会返回一个QJsonParseError对象,whichError会指示是哪个配置文件加载失败。 这里的加载问题主要指语法问题,如果是文件读写时发生问题,则返回值会是QJsonParseError::NoError,但whichError会指示是 哪个文件读写失败,而非被置为0。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void JsonDocument::save()
保存配置到文件。
此函数会将当前配置保存到文件,如果文件不存在,会自动创建。考虑到读取时已经有强制文件存在的逻辑, 因此自动创建的场景较少,但仍不排除用户故意在读取后删除文件的情况。
此函数不保存默认配置文件中出现的改动,因为理论上用户无法从VIJsonDocument中修改默认配置。 如果用户通过某种手段修改了默认配置,则不在本函数考虑范围内。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void JsonDocument::setArray(const QString &key, const QList<Visindigo::Utility::JsonConfig> &value)
设置指定键的数组。 key 键的路径。 value 值。
此函数会设置指定键的数组,如果键不存在,则会自动创建。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 isArray().
[since Visindigo 0.13.0] void JsonDocument::setBool(const QString &key, bool value)
设置指定键的布尔值。 key 键的路径。 value 值。
此函数会设置指定键的布尔值,如果键不存在,则会自动创建。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 isBool().
[since Visindigo 0.13.0] void JsonDocument::setDouble(const QString &key, double value)
设置指定键的浮点数值。 key 键的路径。 value 值。
此函数会设置指定键的浮点数值,如果键不存在,则会自动创建。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 isDouble().
[since Visindigo 0.13.0] void JsonDocument::setInt(const QString &key, qint64 value)
设置指定键的整数值。 key 键的路径。 value 值。
此函数会设置指定键的整数值,如果键不存在,则会自动创建。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 isInt().
[since Visindigo 0.13.0] void JsonDocument::setObject(const QString &key, const Visindigo::Utility::JsonConfig &value)
设置指定键的对象。 key 键的路径。 value 值。
此函数会设置指定键的对象,如果键不存在,则会自动创建。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 isObject().
[since Visindigo 0.13.0] void JsonDocument::setString(const QString &key, const QString &value)
设置指定键的字符串值。 key 键的路径。 value 值。
此函数会设置指定键的字符串值,如果键不存在,则会自动创建。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 isString().
[since Visindigo 0.13.0] void JsonDocument::setValue(const QString &key, const QJsonValue &value)
设置指定键的值。 key 键的路径。 value 值。
此函数会设置指定键的值,如果键不存在,则会自动创建。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] Visindigo::Utility::JsonValueRef JsonDocument::operator[](const QString &key)
获取指定键的值。 key 键的路径。
此函数会返回指定键的值,如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空值。
这个 function 从 Visindigo 0.13.0 开始支持。