error: QJsonParseError

目的

前一段时间对加密json文件进行解读,然后将数据结果显示出来,出现了如下

  1. Unterminated string
  2. illegal value
    这两种类型错误,主要是因为要将MFC下的移植到Qt下,改用新框架。原先采用的CFile, CString,分别改为QFile, QString, QByteArray。

Unterminated string

解析json文件时候出现如下Unterminated string,无终结的字符串,然后当时傻呵呵的添加了个"\0",然后发现仍然不对。

通过对比发现读文件内容没问题,在于我设置转化过程中把大小的值缩短了导致只有部分的值进行了解析出现了未终结的字符串。

//dataByte QByteArray
//stdJson  std::string
dataByte = file.readAll();
// 第1种方式
stdJson = std::string(dataByte.constData);
//第二种方式  
stdJson = dataByte.toStdString();
stdJson = decodeFile(stdJson, keys);

第一种方式 : stdJson size 只有 674 dataByte.constData是一个const char* 指针 导致内容size的变小;
第二种方式 : stdJson size 只有 32万多 与dataByte size差不多;

illegal value

这个问题 就有点尴尬了, 我网上搜了一些 也没有怎么理解,当时还怀疑json文件是否问题,但是发现老版的读写没问题。然后我重新梳理思路,

读文件大致分为三部:

  1. 按照某个模式(读或写)打开文件 open
  2. 给对应的数据结构分配足够的内存
  3. 然后read

对比老版,发现open模式可能不对,

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

//后改为
file.open(QIODevice::ReadOnly);

原因:
因为我那加密文件是json类型,所以用Text 打开进行读时会按照Text模式进行读,导致读出来数据会有问题。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值