Json字符串与QVariantList 对象相互转换

简介: Json字符串与QVariantList 对象相互转换

在Qt中QVariantList 使用起来很方便,如果涉及到数据的传输,需要将QVariantList 数据转换为JsonArray字符串,这个转换Qt已经实现好了,只需要调用接口就可以完成转换,代码如下:


main.cpp

#include <QCoreApplication>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonValue>
#include <QJsonObject>
 
#include <QVariantMap>
#include <QVariantList>
#include <QDebug>
 
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    QVariantList QVarList;
 
    QVariantMap tmpvm;
    for ( int i = 0; i < 3; i ++ )
    {
        tmpvm.clear();
        tmpvm["name"] = QString("Test%1").arg(i);
        tmpvm["no"] = QString::number(i);
 
        QVarList<<tmpvm;
    }
 
    qDebug()<<"qvarList: "<<QVarList;
 
 
    //QVariantList转为Jsonarray字符串
    QJsonArray jsonArray = QJsonArray::fromVariantList(QVarList);
 
    QJsonDocument jsonDoc(jsonArray);
    qDebug()<<"------------------------------QVariantList to json-------------------------------";
    qDebug() << jsonDoc.toJson();
 
    //Jsonarray字符串转为QVariantList
    QString str = "[{\"no\": \"1\", \"name\": \"Jack\"},{\"no\": \"2\", \"name\": \"Tom\"},{\"no\": \"3\", \"name\": \"Stans\"}]";
    QJsonDocument json = QJsonDocument::fromJson(str.toLatin1());
    qDebug()<<"------------------------------json to QVariantList-------------------------------";
 
    qDebug()<<"qvarList: "<<json.array().toVariantList();;
 
 
    return a.exec();
}


执行结果:


为了方便看,手动把执行结果的格式调整了下,加了换行。

qvarList:  
(
QVariant(QVariantMap, QMap(("name", QVariant(QString, "Test0"))("no", QVariant(QString, "0")))), 
QVariant(QVariantMap, QMap(("name", QVariant(QString, "Test1"))("no", QVariant(QString, "1")))), 
QVariant(QVariantMap, QMap(("name", QVariant(QString, "Test2"))("no", QVariant(QString, "2"))))
)
------------------------------QVariantList to json-------------------------------
"[ 
{ "name": "Test0", "no": "0" }, 
{ "name": "Test1", "no": "1" }, 
{ "name": "Test2", "no": "2" }
]"
------------------------------json to QVariantList-------------------------------
qvarList:  
(
QVariant(QVariantMap, QMap(("name", QVariant(QString, "Jack"))("no", QVariant(QString, "1")))), 
QVariant(QVariantMap, QMap(("name", QVariant(QString, "Tom"))("no", QVariant(QString, "2")))),
QVariant(QVariantMap, QMap(("name", QVariant(QString, "Stans"))("no", QVariant(QString, "3"))))
)​
目录
相关文章
|
1天前
|
存储 JSON 测试技术
python中json和类对象的相互转化
针对python中类对象和json的相关转化问题, 本文介绍了4种方式,涉及了三个非常强大的python库jsonpickle、attrs和cattrs、pydantic,但是这些库的功能并未涉及太深。在工作中,遇到实际的问题时,可以根据这几种方法,灵活选取。 再回到结构化测试数据的构造,当需要对数据进行建模时,也就是赋予数据业务含义,pydantic应该是首选,目前(2024.7.1)来看,pydantic的生态非常活跃,各种基于pydantic的工具也非常多,建议尝试。
|
6天前
|
JSON Java fastjson
老程序员分享:java对象转json
老程序员分享:java对象转json
12 3
|
11天前
|
Web App开发 JSON JavaScript
JavaScript对象常用操作JSON总结
JavaScript对象常用操作JSON总结
19 8
|
11天前
|
JSON Java 数据格式
Java中创建Json对象的方法和详细代码
Java中创建Json对象的方法和详细代码
23 1
|
19天前
|
JSON JavaScript 前端开发
js将json字符串还原为json
【6月更文挑战第15天】js将json字符串还原为json
20 4
|
23天前
|
存储 JSON JavaScript
JavaScript基础-对象与JSON
【6月更文挑战第11天】本文介绍了JavaScript对象的创建(字面量、构造函数、Class)与操作,包括属性访问和描述符。同时讲解了JSON的性质及其与JS对象的关系,以及序列化和解析过程。文章还列举了三个常见易错点(属性访问错误、JSON格式错误、循环引用)并提供了避免策略。通过代码示例展示如何操作对象和处理JSON,强调实践对于掌握这些概念的重要性。
|
1天前
|
JSON Java 数据格式
前后端数据交换,JSON基础语法和JSON数据和Java对象转换,最快的对象转换,JSON{““}字符串如何写User{id=1,username=‘zhangsan‘,password=‘123‘}
前后端数据交换,JSON基础语法和JSON数据和Java对象转换,最快的对象转换,JSON{““}字符串如何写User{id=1,username=‘zhangsan‘,password=‘123‘}
|
6天前
|
JSON 运维 Serverless
函数计算产品使用问题之无法返回JSON对象,一般是什么导致的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7天前
|
JSON 数据格式
|
7天前
|
JSON 前端开发 JavaScript
程序员必知:字符串转换成JSON的三种方式
程序员必知:字符串转换成JSON的三种方式