Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

Visindigo::Utility::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()

构造函数

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] JsonDocument::JsonDocument(const QString &configPath, const QString &defaultConfigPath)

configPath 配置文件路径。 defaultConfigPath 默认配置文件路径。

构造函数,创建一个JsonDocument对象,并指定配置文件路径和默认配置文件路径。

这个function 从 Visindigo 0.13.0 开始支持。

[noexcept, since Visindigo 0.13.0] JsonDocument::~JsonDocument()

析构函数

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::contains(const QString &key)

key 键的路径。

return 指定键是否存在。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QList<Visindigo::Utility::JsonConfig> JsonDocument::getArray(const QString &key = "")

key 键的路径。

return 指定键的数组。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空数组。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::getBool(const QString &key = "")

key 键的路径。

return 指定键的布尔值。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] double JsonDocument::getDouble(const QString &key = "")

key 键的路径。

return 指定键的浮点数值。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回0.0。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] qint64 JsonDocument::getInt(const QString &key = "")

key 键的路径。

return 指定键的整数值。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回0。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] Visindigo::Utility::JsonConfig JsonDocument::getObject(const QString &key = "")

key 键的路径。

return 指定键的对象。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空对象。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QString JsonDocument::getString(const QString &key = "")

key 键的路径。

return 指定键的字符串值。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空字符串。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QJsonValue JsonDocument::getValue(const QString &key = "")

key 键的路径。

return 指定键的值。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空值。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::isArray(const QString &key = "")

key 键的路径。

return 指定键的值是否为数组。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::isBool(const QString &key = "")

key 键的路径。

return 指定键的值是否为布尔值。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::isDouble(const QString &key = "")

key 键的路径。

return 指定键的值是否为浮点数。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::isEmpty(const QString &key = "")

key 键的路径。

return 判断指定键是否存在。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回true。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::isInt(const QString &key = "")

key 键的路径。

return 指定键的值是否为整数。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::isNull(const QString &key = "")

key 键的路径。

return 判断指定键的值是否为null。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回true。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::isObject(const QString &key = "")

key 键的路径。

return 指定键的值是否为对象。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] bool JsonDocument::isString(const QString &key = "")

key 键的路径。

return 指定键的值是否为字符串。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] QStringList JsonDocument::keys(const QString &key = "")

key 键的路径。

return 指定路径下的所有键,如果路径为空,则返回根键。

这个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。

return 读取配置文件的结果,如果成功,则返回QJsonParseError::NoError;如果失败,则返回相应的错误类型。

这个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 键的路径。

return 指定键的值。

如果现有配置中键不存在,则尝试从默认配置中读取,如果默认配置中也不存在,则返回一个空值。

这个function 从 Visindigo 0.13.0 开始支持。