jsonqt解析数组_Qt--解析Json
⼀、QT5 Json简介
QT4中使⽤第三⽅库QJson解析JSON⽂件。
QT5新增加了处理JSON的类,类均以QJson开头,包含在QtCore模块中。QT5新增加六个相关类:
QJsonArray
封装 JSON 数组
QJsonDocument
读写 JSON ⽂档
QJsonObject
封装 JSON 对象
QJsonObject::iterator
⽤于遍历QJsonObject的STL风格的⾮const遍历器
QJsonParseError
报告 JSON 处理过程中出现的错误
QJsonValue
封装 JSON 值
⼆、QJsonDocument
1、QJsonDocument简介
QJsonDocument提供了读写Json⽂档的⽅法。
QJsonDocument是⼀个包含了完整JSON⽂档的类,⽀持以UTF-8编码的⽂本和QT⾃⾝的⼆进制格式来读写JSON⽂档。
JSON⽂档可以使⽤QJsonDocument::fromJson()将基于JSON⽂档的⽂本形式转换为QJsonDocument对象,toJSON()可以将QJsonDocument转换回⽂本形式。
解析⽂档的有效性可以使⽤ !isNull() 进⾏查询。
使⽤isArray()和isObject()可以分别查询⼀个⽂档是否包含了⼀个数组或⼀个object。使⽤array()或object()可以将包含在⽂档中的数组或object提取出来。
使⽤fromBinaryData()或fromRawData()也可以从⼀个⼆进制形式创建⼀个QJsonDocument对象。
2、QJsonDocument成员函数
[static] QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidation validation = Validate)
Validation决定数据是否在使⽤前检查数据有效性。
[static] QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error = Q_NULLPTR)
将json解析为UTF-8的JSON⽂档
[static] QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidation validation = Validate)
使⽤data数据的前size字节创建⼀个QJsonDocument对象
根据variant创建QJsonDocument对象
bool QJsonDocument::isArray() const
bool QJsonDocument::isEmpty() const
bool QJsonDocument::isNull() const
bool QJsonDocument::isObject() const
QJsonObject QJsonDocument::object() const
返回⽂档中包含的QJsonObject对象
const char *QJsonDocument::rawData(int *size) const
返回size⼤⼩的⼆进制数据
void QJsonDocument::setArray(const QJsonArray &array)
设置array作为⽂档中的主对象
void QJsonDocument::setObject(const QJsonObject &object)
设置object作为⽂档中的主对象
QByteArray QJsonDocument::toBinaryData() const
返回⽂档的⼆进制格式数据
QByteArray QJsonDocument::toJson(JsonFormat format = Indented) const
将QJsonDocument转换为UTF-8编码的format格式的JSON⽂档
QVariant QJsonDocument::toVariant() const
返回JSON⽂档的QVariant格式
3、QJsonDocument对象的构建
A、QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = Q_NULLPTR) fromJson()可以由QByteArray对象构造⼀个QJsonDocument对象
QJsonObject json;
json.insert("name", QString("Qt"));
json.insert("version", 5);
json.insert("windows", true);
QJsonDocument document;
document.setObject(json);
QByteArray byte_Json(QJsonDocument::Compact);
QJsonParseError json_error;
QJsonDocument parse_doucment= QJsonDocument::fromJson(byte_array, &json_error);
B、QJsonDocument fromVariant(const QVariant &variant)
QVariantList people;
bob.insert("Name", "Bob");
bob.insert("Phonenumber", 123);
QVariantMap alice;
alice.insert("Name", "Alice");
alice.insert("Phonenumber", 321);
people<< bob <
QJsonDocument jsonDocument=QJsonDocument::fromVariant(people);if (!jsonDocument.isNull())
{
qDebug()<
}
C、QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate)
D、QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate)
三、QJsonArray
1、QJsonArray简介
QJsonArray封装了JSON数组。
JSON数组是值的链表,可以插⼊和删除QJsonValue。
QJsonArray与QVariantList可以相互转换。QJsonArray可以⽤size(), insert(), removeAt()进⾏操作,还可以⽤标准C++的迭代器模式来迭代其内容。
QJsonArray是⼀个隐式共享的类,只要没有被改变,可以和创建QJsonArray的document共享数据。
通过QJsonDocument可以将⼀个QJsonArray转换成或转换⾃⼀个⽂本形式的JSON。
2、QJsonArray成员函数
QJsonArray::QJsonArray(std::initializer_list args)
构建⼀个QJsonArray
QJsonArray::QJsonArray(const QJsonArray &other)
void QJsonArray::append(const QJsonValue &value)
在QJsonArray尾部插⼊value
QJsonValue QJsonArray::at(int i) const
返回QJsonArray中索引为i的QJsonValue值
iterator QJsonArray::begin()
const_iterator QJsonArray::begin() const
返回指向数组第⼀个元素的STL风格迭代器
const_iterator QJsonArray::constBegin() const
返回指向数组第⼀个元素的const STL风格迭代器
返回指向数组最后⼀个元素后的位置的const STL风格迭代器
bool QJsonArray::contains(const QJsonValue &value) const
如果数组中包含value,返回true
int QJsonArray::count() const
返回数组的⼤⼩error parse new
bool QJsonArray::empty() const
如果数组为空,返回true
const_iterator QJsonArray::end() const
返回指向数组最后⼀个元素后的位置的STL风格迭代器
iterator QJsonArray::erase(iterator it)
删除迭代器it指向的元素,返回指向下⼀个元素的迭代器
QJsonValue QJsonArray::first() const
返回数组中的第⼀个值
[static] QJsonArray QJsonArray::fromStringList(const QStringList &list)
将⼀个字符串链表list转换为QJsonArray
[static] QJsonArray QJsonArray::fromVariantList(const QVariantList &list)
将链表list转换为QJsonArray
四、QJsonObject
1、QJsonObject简介
QJsonObject类⽤于封装JSON对象。JSON对象是包含键值对的链表,其中键是唯⼀的字符串,其值由QJsonValue代表。
QJsonObject可以与QVariantMap相互转换,可以⽤size()来获得键值对的数⽬,insert()、remove()分别⽤来插⼊和删除pair。可以⽤标准C++的迭代器模式(iterator pattern)来迭代其内容。
QJsonObject是⼀个隐式共享的类,只要没有被改变过,QJsonObject会和创建它的document共享数
据。
可以通过QJsonDocument将QJsonObject和⽂本格式相互转换。
2、QJsonObject成员函数
QJsonObject::QJsonObject(std::initializer_list > args)
使⽤键值对链表构建QJsonObject对象
QJsonObject::QJsonObject(const QJsonObject &other)
iterator QJsonObject::begin()
const_iterator QJsonObject::begin() const
返回指向JSON对象的第⼀个元素的STL风格的迭代器
const_iterator QJsonObject::constBegin() const
返回指向JSON对象的第⼀个元素的const STL风格的迭代器
返回SJON对象的最后⼀个元素后的位置的const STL风格的迭代器
const_iterator QJsonObject::constFind(const QString &key) const
返回⼀个指向键值对中键为key的元素的const迭代器
bool QJsonObject::contains(const QString &key) const
如果JSON对象中包含键key,返回true
int QJsonObject::size() const
int QJsonObject::count() const
返回JSON对象中键值对的数量
bool QJsonObject::empty() const
bool QJsonObject::isEmpty() const
如果JSON对象为空,返回true
iterator QJsonObject::find(const QString &key)
const_iterator QJsonObject::find(const QString &key) const
返回指向JSON对象中键为key的键值对的迭代器
[static] QJsonObject QJsonObject::fromVariantHash(const QVariantHash &hash)将hash转换为JSON对象
[static] QJsonObject QJsonObject::fromVariantMap(const QVariantMap &map)
将map转换为JSON对象
iterator QJsonObject::insert(const QString &key, const QJsonValue &value)
插⼊键为key,值为value的键值对,返回插⼊键值对的迭代器
QStringList QJsonObject::keys() const
返回JSON对象的所有键的链表
void QJsonObject::remove(const QString &key)
删除JSON对象中的key
QJsonValue QJsonObject::take(const QString &key)
删除JSON对象中的键key,返回key对应的QJsonValue
QVariantHash QJsonObject::toVariantHash() const
将JSON对象转换为QVariantHash
QVariantMap QJsonObject::toVariantMap() const
将JSON对象转换为QVariantMap
QJsonValue QJsonObject::value(const QString &key) const
返回key对应的QJsonValue值
五、QJsonParseError

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。