Qt读写Json格式配置文件

 头文件Config.h

#pragma once

#include <QVariantMap>

class Config
{
public:
    Config(const QString &fileName);
    ~Config();

    bool open(const QString &fileName);
    void sync();

    void write(const QString &key, const QVariant& value);

    QString readString(const QString &key, const QString &default = "");
    bool readBool(const QString &key, bool default = false);
    int readInt(const QString &key, int default = 0);

private:
    QString m_fileName;

    QVariantMap m_cache;
};

源文件Config.cpp

#include "Config.h"

#include <QFile>
#include <QJsonDocument>
#include <QJsonObject>


Config::Config(const QString &fileName)
    : m_fileName(fileName)
{
    open(fileName);
}

Config::~Config()
{
    sync();
}

bool Config::open(const QString &fileName)
{
    QFile file(fileName);
    if (!file.open(QIODevice::ReadOnly))
    {
        return false;
    }
    QByteArray allData = file.readAll();
    file.close();

    QJsonParseError jsonError;
    QJsonDocument jsonDoc = QJsonDocument::fromJson(allData, &jsonError);
    if (jsonError.error != QJsonParseError::NoError)
    {
        return false;
    }

    QJsonObject root = jsonDoc.object();
    m_cache = root.toVariantMap();

    return true;
}

void Config::sync()
{
    QJsonObject root = QJsonObject::fromVariantMap(m_cache);
    QJsonDocument jsonDoc(root);
    QByteArray data = jsonDoc.toJson(QJsonDocument::Compact);
    QFile file(m_fileName);
    if (file.open(QIODevice::WriteOnly))
    {
        file.write(data);
        file.close();
    }
}

void Config::write(const QString &key, const QVariant &value)
{
    m_cache.insert(key, value);
}

QString Config::readString(const QString &key, const QString &default)
{
    if (m_cache.contains(key))
    {
        return m_cache.value(key).toString();
    }

    return default;
}

bool Config::readBool(const QString &key, bool default)
{
    if (m_cache.contains(key))
    {
        return m_cache.value(key).toBool();
    }

    return default;
}

int Config::readInt(const QString &key, int default)
{
    if (m_cache.contains(key))
    {
        return m_cache.value(key).toInt();
    }

    return default;
}

 

转载于:https://www.cnblogs.com/dengyg0710/p/10836890.html

uniapp:APP报错Error: Not Found:Page[2][-1,1;-1,1,0,0,2-0] at view.umd.min.js:1(uniApp安卓苹果ios出现一大堆数字错误) Error: Not Found:Page[2][一串数字] at view.umd.min.js:1,uniapp在APP端运行报错Error: Not Found:Page[2][-1,1;-1,1,0,0,2-0] at view.umd.min.js:1,uniapp真机运行偶尔出现Not Found:Page[2][-1,28] at view.umd.min.js:1,如何解决uniApp app报错:Not found -1,71 at view.umd.min.js:1,uniapp项目在H 阅读详情

相关推荐

《使用R包ggtree进行进化树的绘制与美化》

都2023年了,才去使用Y叔早在2018年发表的进化树构建利器——ggtree。刚好最近在做基因家族分析,进化树的构建与美化确实有点麻烦,先前使用MEGA11进行了绘制,但图像简陋,于是导出了nwk文件,准备使用其他软件进行美化。这里,我使用ggtree包进行操作。

沉香best的博客 6854

qt中使用json作为配置文件_1

Qt可以使用JSON作为配置文件Qt提供了QJsonDocument和QJsonObject等类来处理JSON数据,可以将JSON数据解析为Qt中的对象,也可以将Qt中的对象序列化为JSON数据。

weixin_44050362的博客 2448

QT,解析和写json文件

Qt,使用QT自带类,解析Json文件,写Json文件、、、、

Qt自定义json配置文件类,QJsonDocument应用

Qt的配置类QSettings主要是键值结构的配置,若需要的配置项为树形结构,例如配置学校\学院\班级\学生这样,使用键值结构已经不满足我们的需求了,我们可以使用xml文件或json文件实现树形结构的配置。本文实现自定义json文件配置类,实现快速的对json文件的增删改查。本代码示例对学院\班级\课程的配置,配置的结构有变化可自行修改代码,对json文件的增删改查结构可以通用。

寒木休思的博客 1054

QT---使用json读写json对象

前言 在QT开发中,涉及到网络方面的知识,往往离不开JSON,JSON 格式是文本,它能够轻松地在服务器浏览器之间传输,并用作任何编程语言的数据格式。 下面,我们给出了一个小的demo,用来巩固其在QT中的应用。 思考 问题- - - 如何创建JSON对象,并将JSON对象中所包含的数据保存到本地? 以图1为例,我们将一步一步演示这个过程: 图1 解决方法 第一步(创建工程) 图2 图3 第二步(代码实现) 先引入四个头文件(头文件的作用已给出对应注释)

qq_40077565的博客 8995

QT】【JSONqtjson文件读写操作

JSON[]中标识数组{}中标识对象我们可以观察如下的一段Json内容。目标是将此内容读出来,并且填入到表格中,同时可以在表格中更新此部分内容的同时还会更新此文件。"mode": "测试模式1","ev": "","wb": ""},"mode": "测试模式2","name": "模组名字1",},"name": "模组名字2",先观察上述Json文件的构造。能看出要先构造好对应的外圈大数组。

没有手牌的博客 5675

qt 读写json格式配置文件

qt 读写json格式的配置

xie__jin__cheng的博客 709

QtJSON教程-实战篇

JSON三兄弟实战例子的后续故事。

Qt君 1875

Qt-配置文件(INI/JSON/XML)

这里仅介绍三者作为配置文件时的用法,他们还有其他很多功能。三种配置格式对比💡 选择建议:简单配置、用户设置、快速原型:Web应用、前后端配置、复杂数据结构:企业系统、文档配置、需要严格验证的场景。

Ghy_01的博客 675

Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件...

第一种INI配置文件 .ini文件是InitializationFile的缩写,即初始化文件。 除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。 读INI文件 INI文件内容如下: [conn] i...

weixin_30902675的博客 388

qt 配置文件读写操作

ini文件读写 xml文件读写 json 文件读写 数据结构保存到二进制文件 并读取 sqlite 数据库文件读取

abc 279

Qt文件写入和读取

1.写入数据到文件 //writetext QFile file("./test.txt"); file.open( QIODevice::ReadWrite | QIODevice::Append); QTextStream out(&amp;file); if(!ui-&gt;lineEdit-&gt;text().isEmpty() &amp;&...

yuxing55555的博客 1万+

Qt的三种文件读取方式

Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件

dabai86的博客 1351

Qt 读写Json文件

/ 因为里面就一个元素, 如果有多个元素, 可以通过array.size()便利。// 写入到文件, 名字为info.json。// 解析Json过程。

oracleworm的博客 621

[QT编程系列-35]:数据存储 - JSON格式配置数据的存储与通知

这些 JSON 示例展示了不同的数据结构,包括简单对象、嵌套对象、数组,以及各种数据类型,例如字符串、数值、布尔值和空值。通过读取和解析这个 JSON 配置文件,应用程序可以获取和使用配置信息来设定其行为和设置。JSON 文本可以被解析和生成以在不同的编程语言和平台之间传输和处理数据。使用 QJsonObject,你可以创建、操作和访问 JSON 对象中的键值对数据。QJsonDocument 还提供了其他一些有用的方法,例如设置和获取文档的元数据,合并多个 JSON 文档等。

文火冰糖(王文兵)的博客 1591

Qt5 利用QJson从文件读取Json并解析

Json文件是这样: { &quot;first fruit&quot;: { &quot;describe&quot;:&quot;an apple&quot;, &quot;icon&quot;:&quot;appleIcon&quot;, &quot;name&quot;:&quot;apple&quot; },

斧冰 5万+

QT文件操作】---Json文件读取

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前端与后端之间的数据传输。它以简洁、易读的文本格式来表示结构化数据,通常由键值对(key-value pairs)组成,支持数组(array)和嵌套对象(nested objects)。JSON具有广泛的应用,特别在Web开发中被广泛使用。JSON的语法规则简单明了,常见的数据类型包括字符串、数字、布尔值、null、数组和对象。它可以表示复杂的数据结构,并且易于解析和生成。

qq_45031489的博客 1402

Qt中使用JSON文件进行程序配置

如果需要在运行时修改JSON文件,建议直接使用外部文件。如果需要默认配置,可以将默认配置打包到。

qq_51908382的博客 1232

qt 简单实验 读取json格式配置文件

qt 简单实验 读取json格式配置文件

xie__jin__cheng的博客 456

cygwin1.dll

拿去吧 需要的拿走 东西挺难找的 cygwin1.dll

上一篇: 分布式系统(微服务架构)的一致性和幂等性问题相关概念解析
下一篇: Springboot java.awt.HeadlessException
weixin_34080903
博客等级 码龄11年 4721粉丝 157原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值