QJson生成文件和解析文件

QJson生成.json文件

生成简单的json文件

    QVariantHash data;
    QVariantHash patientData;
    patientData.insert("patient ID","22334");
    patientData.insert("Name","ZYL_YY");
    patientData.insert("age","26");
    patientData.insert("clinicalData","wwwww");
    patientData.insert("Selected site","lever");
    patientData.insert("Selected mode","pulse mode");
    data.insert("patientInformation",patientData);
     QJsonObject rootobj = QJsonObject::fromVariantHash(data);
    QJsonDocument document;
    document.setObject(rootobj);
    QByteArray byte_array = document.toJson();
    QString json_str = (byte_array);
    QFile file("/home/wxh1/1.json");
    if(!file.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate))
    {
        qDebug()<<"file error";
    }
    QTextStream in(&file);
    in<<json_str;
    file.close();

生成的jison文件

{
    "patientInformation": {
        "Name": "ZYL_YY",
        "Selected mode": "pulse mode",
        "Selected site": "lever",
        "age": "26",
        "clinicalData": "wwwww",
        "patient ID": "22334"
    }
}

解析json文件QFile file("/home/wxh1/1.json");

//
file.open(QIODevice::ReadOnly | QIODevice::Text);
//

QString value = file.readAll();
file.close();
//
QJsonParseError jsonError;
QJsonDocument doucement = QJsonDocument::fromJson(value.toUtf8(),&jsonError);
//
if(!doucement.isNull()&&(jsonError.error == QJsonParseError::NoError))
{
   //
   if(doucement.isObject())
   {
      //
       _jsonObject = doucement.object();
       QVector<QString> patien_item(6);
      //
      if(_jsonObject.contains("patientInformation"))
      {
        //
        QJsonValue jsonValueList = _jsonObject.value(QStringLiteral("patientInformation"));
        QJsonObject item = jsonValueList.toObject();
        //
        patien_item[0]=item["Name"].toString();
        patien_item[1]=item["Selected mode"].toString();
        patien_item[2]=item["Selected site"].toString();
        patien_item[3]=item["patient ID"].toString();
        patien_item[4]=item["age"].toString();
        patien_item[5]=item["clinicalData"].toString();
      }
    }
 }

构建json数组

  QJsonArray probePlacementData;
    for(int i =0;i<5;i++)
    {
        QJsonObject obj;
        obj.insert("voltage","3000");
        obj.insert("distance","2.4");
        obj.insert("pulseLength","100");
        obj.insert("numpulse","90");
        probePlacementData.append(obj);

    }
    data.insert("probePlacementData",probePlacementData);

    QJsonObject rootobj = QJsonObject::fromVariantHash(data);
    QJsonDocument document;
    document.setObject(rootobj);
    QByteArray byte_array = document.toJson();
    QString json_str = (byte_array);
    QFile file("/home/wxh1/1.json");
    if(!file.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate))
    {
        qDebug()<<"file error";
    }
    QTextStream in(&file);
    in<<json_str;
    file.close();

 生成的json文件

{
    "probePlacementData": [
        {
            "distance": "2.4",
            "numpulse": "90",
            "pulseLength": "100",
            "voltage": "3000"
        },
        {
            "distance": "2.4",
            "numpulse": "90",
            "pulseLength": "100",
            "voltage": "3000"
        },
        {
            "distance": "2.4",
            "numpulse": "90",
            "pulseLength": "100",
            "voltage": "3000"
        },
        {
            "distance": "2.4",
            "numpulse": "90",
            "pulseLength": "100",
            "voltage": "3000"
        },
        {
            "distance": "2.4",
            "numpulse": "90",
            "pulseLength": "100",
            "voltage": "3000"
        }
    ]
}

 解析json文件

struct _probePlacementDataStruct
{
    QString voltage;
    QString distance;
    QString pulseLegth;
    QString numpulse;
};

QFile file("/home/wxh1/1.json");
//
file.open(QIODevice::ReadOnly | QIODevice::Text);
//

QString value = file.readAll();
file.close();
//
QJsonParseError jsonError;
QJsonDocument doucement = QJsonDocument::fromJson(value.toUtf8(),&jsonError);
//
if(!doucement.isNull()&&(jsonError.error == QJsonParseError::NoError))
{
   //
   if(doucement.isObject())
   {
       //
       _jsonObject = doucement.object();
       if(_jsonObject.contains(QStringLiteral("probePlacementData")))
       {
        QJsonValue arrayVaule = _jsonObject.value(QStringLiteral("probePlacementData"));
        if(arrayVaule.isArray())
        {
            QJsonArray array = arrayVaule.toArray();
            for(int i = 0;i<array.size();i++)
            {
                QJsonValue iconArray = array.at(i);
                QJsonObject  childrens = iconArray.toObject();
                QString pAdd = childrens["P+"].toString();
                QString pdec = childrens["P-"].toString();
                QString voltage = childrens["voltage"].toString();
                QString distance = childrens["distance"].toString();
                QString pulseLength = childrens["pulseLength"].toString();
                QString numPulse = childrens["numpulse"].toString();
                QString v_cm = childrens["v/cm"].toString();
                _probePlacementDataStruct list;
                list.voltage = voltage;
                list.distance = distance;
                list.pulseLegth = pulseLength;
                list.numpulse = numPulse;
            }
        }
     }
   }
 }

  

原文地址:https://www.cnblogs.com/wxh-53919/p/10910495.html

时间: 2024-08-05 04:24:19

QJson生成文件和解析文件的相关文章

JS获取本地文件并且解析文件内容(XML,TXT)

$(function(){ $("body").on("change", "#file", function (event) { uploadfile(this,event); }) function uploadfile(){ var files = event.target.files, file; if (files && files.length > 0) { // 获取目前上传的文件 file = files[0]

Java之Pull方式生成xml文件和解析xml文件

Pull XML解析器早已经被google集成到android sdk当中,它是google官方推荐的解析器. 如果我们要在Java桌面.J2ME等当中使用Pull方式生成xml文件和解析xml文件,需要用到kxml2: KXML解析器是基于普通XML PULL解析器的一个小巧的解析器,官网是http://kxml.org/ 普通XML PULL解析器的官网是http://xmlpull.org/ 实验开始: 在Eclipse中新建一个java项目,其中新建一个libs文件夹,拷贝从网上下载的k

用SAX和PULL进行XML文件的解析与生成

XML解析有传统的dom方法还有Jsoup,SAX,PULL等,这里讲的是比较省内存的SAX和PULL方法.Android中极力推荐用PULL的方式来解析,我个人觉得pull确实比较简单,但其内部的逻辑性不是很分明.所以今天做了个类来将其中的多个步骤进行了分割,以后直接拿来用即可. 1.SAX: 首先先讲解SAX中各个方法的作用: 我们以这个不规则的xml语句做例子: <abc:kale sex=m age=21>jack</abc:kale> startDocument:开始解析

Java生成和操作Excel文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析

Office文件的奥秘——.NET平台下不借助Office实现Word.Powerpoint等文件的解析 分类: 技术 2013-07-26 15:38 852人阅读 评论(0) 收藏 举报 OfficePowerPointWord格式解析 转载http://www.cnblogs.com/mayswind/archive/2013/03/17/2962205.html [题外话] 这是2010年参加比赛时候做的研究,当时为了实现对Word.Excel.PowerPoint文件文字内容的抽取研究

xml文件以及解析

1.创建一个xml文件 <?xml version="1.0" encoding="UTF-8"?> <!-- xml:是一个可扩展的标记语言 01.很像超文本标记语言(html) 02.xml文件着重保存或者传输数据,不专注显示 03.无需预编译 04.符合w3c标准 < : < > : > " : " ' : &apos; & : & <![CDATA[代码]]>

Android NDK 在eclipse中生成C/C++头文件

我们知道在Android NDK开发中,让原生函数名及参数列表与java类文件的原始定义一致是繁杂而多余的,因为JDK自带一个名为javah的命令行工具来执行任务,javah工具可以为原生方法解析Java类文件并生成由原生方法声明组成的头文件.但是在开发中如果来回切换命令终端的话,可以说是很繁琐的,今天的这篇博文就来阐述一下如何在eclipse中生成头文件. (1)打开Eclipse IDE,在顶部菜单栏选择Run|External Tools|External Tools Configurat

(转载)Java生成和操作Excel文件

JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为它是使用Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 下载: 官方网站 http://www.andykhan.com/jexcelapi/ 下载最新版本(本人下的是jexcelapi_2_6

php对xml文件的解析

近来较少写博客了,得克服懒惰的秉性啊! 今天研究了一下php对xml文件的解析. 用到了php的simplexml_load_file()方法,该方法会将xml文件生成一个SimpleXMLElement对象,该对象是继承了Traversable接口的对象,即可以像数组那样遍历其子集. 这样,我们就可以循环得到xml文件的内容,不多说废话,上例子. 假设有如下内容,名为test.xml的xml文件: <?xml version="1.0" encoding="utf-8