Json文件是这样:

{
"first fruit":
{
"describe":"an apple",
"icon":"appleIcon",
"name":"apple"
},
"second fruit":
{
"describe":"an orange",
"icon":"orangeIcon",
"name":"orange"
},
"three fruit array":
[
"eat 0",
"eat 1",
"eat 2",
"eat 3",
"eat 4"
]
}

存放在本地磁盘。 
利用QJson可以方便的进行解析。

   QFile loadFile("D:\\1.json");

    if(!loadFile.open(QIODevice::ReadOnly))
{
qDebug() << "could't open projects json";
return;
} QByteArray allData = loadFile.readAll();//第一步读取文件到BA
loadFile.close(); QJsonParseError json_error;
QJsonDocument jsonDoc(QJsonDocument::fromJson(allData, &json_error));//第二步将BA内容转为json文档 if(json_error.error != QJsonParseError::NoError)
{
qDebug() << "json error!";
return;
} QJsonObject rootObj = jsonDoc.object();//第三步获取json文档对象 //输出所有key,这一步是非必须的,放最后的话,你可能读不到任何key
QStringList keys = rootObj.keys();//第四步获取json文档对象的所有keys
for(int i = 0; i < keys.size(); i++)
{
qDebug() << "key" << i << " is:" << keys.at(i);
} //因为是预先定义好的JSON数据格式,所以这里可以这样读取
if(rootObj.contains("first fruit"))//第五步根据keys获取内容
{
QJsonObject subObj = rootObj.take("first fruit").toObject();
qDebug() << "describe is:" << subObj["describe"].toString();
qDebug() << "icon is:" << subObj["icon"].toString();
qDebug() << "name is:" << subObj["name"].toString();
} if(rootObj.contains("second fruit"))
{
QJsonObject subObj = rootObj.take("second fruit").toObject();
qDebug() << "describe is:" << subObj.take("describe").toString();
qDebug() << "icon is:" << subObj.take("icon").toString();
qDebug() << "name is:" << subObj.take("name").toString();
} if(rootObj.contains("three fruit array"))
{
QJsonArray subArray = rootObj.take("three fruit array").toArray();
for(int i = 0; i< subArray.size(); i++)
{
qDebug() << i<<" value is:" << subArray.at(i).toString();
}
}

需要包含的头文件:

#include <QJsonDocument>
#include <QJsonParseError>
#include <QFile>
#include <QJsonObject>
#include <QDebug>
#include <QJsonArray>

运行结果:

key 0  is: "first fruit"
key 1 is: "second fruit"
key 2 is: "three fruit array"
describe is: "an apple"
icon is: "appleIcon"
name is: "apple"
describe is: "an orange"
icon is: "orangeIcon"
name is: "orange"
0 value is: "eat 0"
1 value is: "eat 1"
2 value is: "eat 2"
3 value is: "eat 3"
4 value is: "eat 4" 以上转:https://blog.csdn.net/hp_cpp/article/details/80338116PS:如何写json

QJsonObject roadJsonSubObject;
roadJsonSubObject.insert("IP", ui.lineEdit_5->text());
roadJsonSubObject.insert("PORT", ui.lineEdit_7->text());

QJsonDocument document;
document.setObject(roadJsonSubObject);
QByteArray ba = document.toJson(QJsonDocument::Compact);

 

Qt+json的更多相关文章

  1. QT json字符串生成和解析

    1         QT json字符串生成和解析 1.1  QT Json解析流程 (1)  字符串转化为QJsonDocument QJsonParseError json_error; QJso ...

  2. Qt JSON解析生成笔记(把JSON转成一个类对象)

    对于这样一段json { "name": "布衣食", "gender": "Male", "age" ...

  3. Qt JSON解析生成笔记

    对于这样一段json { "name": "布衣食", "gender": "Male", "age" ...

  4. QT json数据的应用(cJSON)

    json数据可保存小量的数据在本地的json文件中.QT有两种方式操作:(1).cJSON (2).QT的操作json数据的类. 应用:将监控预案数据保存在本地中. 1.首先根据预案结构创建一个jso ...

  5. Qt json 数据处理

    用到的头文件 #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> json解 ...

  6. Qt json使用

    JSON 6 种基本数据类型 QJsonValue::Bool QJsonValue::Double QJsonValue::String QJsonValue::Array QJsonValue:: ...

  7. qt json操作

    json文件结构形式 {    "xiao1": [        {            "000100": {                " ...

  8. Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  9. 【转载】Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

随机推荐

  1. Python subprocess shell 编程规范

    使用subprocess通过shell调用另一个模块组件时,需要对返回的code进行判断.判断结果为执行失败时需要raise Exception,不然调用树过于复杂时,我们很难跟踪到异常发生的位置.s ...

  2. sencha touch 入门系列 (八)sencha touch类系统讲解(下)

    接着上一讲,我们通过一组代码来讲解一下st的类的一些属性: Ext.define("MyConfig",{ config:{ website:"http://127.0. ...

  3. JQuery 用法总结

    1.隐藏与显示,用于div等等 //隐藏id=myTab下的所有li标签 $("#myTab li").hide(); //动画隐藏,1秒内隐藏该对象 $(); //显示class ...

  4. fluentValidation集成到autofac

    废话不说直接上代码 // 首先实现ValidatorFactory public class DependencyResolverValidatorFactory : ValidatorFactory ...

  5. 【BZOJ4003】[JLOI2015]城池攻占 可并堆

    [BZOJ4003][JLOI2015]城池攻占 Description 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池. 这 n 个城池用 1 到 n 的整数表示.除 1 号 ...

  6. ios开发 点击文本(TextField)输入的时候向上推以及输入之后恢复的动画

    1.添加委托UITextFieldDelegate 2. -(BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resi ...

  7. mysql load data导入脚本

    # !/bin/bash ############中文说明###################### #本程序的一些提示需要中文支持,如系统没有安装中文包,请先安装:yum -y groupinst ...

  8. javaWeb项目springMVC框架下利用ITextpdf 工具打印PDF文件的方法(打印表单、插入图片)

    方法一:打印PDF表单以及在PDF中加入图片 需要的资料: jar包:iTextAsian.jar ,itext-2.1.7.jar: 源码: public static void main(Stri ...

  9. 【css预处理器】------sass的基本语法------【巷子】

    001.安装sass 1.删除gem源:gem sources --remove https://rubygems.org/ 2.添加国内源:gem sources -a http://gems.ru ...

  10. 【巷子】:关于Apply、call、bind的详解

    call方法: 语法:call(thisObj,'',''........) 定义:调用一个对象的一个方法,以另一个对象替换当前对象 说明:call方法可以用来代替另一个对象调用一个方法.call方法 ...