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

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 开始支持。