在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"))))
)​

微信公众号:

Json字符串与QVariantList 对象相互转换的更多相关文章

  1. json 字符串转换成对象,对象转换成json字符串

    json   字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法:   [注意jquery版本问题] var str = '{"name":&qu ...

  2. JSON字符串和JS对象之间的转换

    JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象  JSON字符串 str JSON.parse(str) eval(str) eva ...

  3. JSON字符串与java对象的转换

    所需的jar包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar ...

  4. JSON 字符串 与 java 对象的转换

    jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html // 引入相应的包 //j ...

  5. Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...

  6. 多层次的Json字符串转化为对象

    using Arvato.CRM.DataTrans.ConsoleHost.Model;using System;using System.Collections.Generic;using Sys ...

  7. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  8. json字符串转java对象

    今天遇到一个问题,前端ajax获取到一个javaBean对象,好多方法发ajax请求需要把这个对象再传到后端,后端再根据这个对象进行操作(之前计划传递id,但发现传递id的话,后端多个方法都需要根据i ...

  9. .net 4中使用 dynamic,将json字符串转成对象的 万能方法。

    在.net 4中增加了对弱类型的支持.为和弱类型的对象进行数据交换提供了方法.我们常常会遇到将json字符串转成对象的情景,虽然可以使用 JavaScriptSerializer 或者 DataCon ...

随机推荐

  1. Java集合类初探

    目录 概述 Iterable和Iterator Collection List Queue Set Map 概述   Java中基本的常用的集合类,主要包含: List Set Queue Map 这 ...

  2. css 实现动态二级菜单

    动态实现简单的二级菜单 当鼠标放到一级标签上时,鼠标会变成小手的形状 展示二级菜单,源码如下,复制即可直接使用 <!DOCTYPE html> <html lang="en ...

  3. Flink之对时间的处理

    window+trigger+watermark处理全局乱序数据,指定窗口上的allowedLateness可以处理特定窗口操作的局部事件时间乱序数据 1.流处理系统中的微批 Flink内部也使用了某 ...

  4. Ethical Hacking - GAINING ACCESS(14)

    CLIENT SIDE ATTACKS Protecting against smart delivery methods Ensure you're not being MITM'ed -> ...

  5. Hexo 踩坑:jquery 报错

    今天玩了一下Hexo(一个基于node.js的静态博客框架),结果部署到服务器上后发现了一个报错. jquery未定义. jquery怎么会报错呢?一看是找不到链接上的文件. //ajax.googl ...

  6. 【requests库】七个主要方法

    本文主要介绍requests库访问http的七个主要方法:get.head.post.put.patch.delete. requests.get()方法 get方法用于获取指定url的HTML网页, ...

  7. 如何获取论文的 idea

    知乎上有一个提问"计算机视觉领域如何从别人的论文里获取自己的idea?" 非常有意思,这里也总结下: Cheng Li的回答:找40篇比较新的paper,最好是开源的.你能看懂的. ...

  8. 开源项目推荐 - 巨鲸任务调度平台(Spark、Flink)

    Big Whale(巨鲸),为美柚大数据研发的大数据任务调度平台,提供Spark.Flink等离线任务的调度(支持任务间的依赖调度)以及实时任务的监控,并具有批次积压告警.任务异常重启.重复应用监测. ...

  9. Android多线程--AsyncTask

    常见的多线程方法有: 继承Thread类 实现Runnable接口 Handler AsyncTask HandlerThread 1.定义 一个Android已经封装好的轻量级异步类 属于抽象类,即 ...

  10. JSONObject遍历

    导入JSONObject和JSONArray所需要的jar包 JSONObject所必需的6个jar包: commons-beanutils-1.7.0.jar commons-collections ...