(三)jsoncpp 使用问题,json转字符串被添加上换行符\n

1、在使用jsoncpp的FastWriter类时,发现write函数输入时,自动添加上了一个换行符

原本的86}结尾变成了86}\n结尾,这对于其他的项目的json解析没有问题,但是做base64加密计算,以及sha256,md5运算,或者字符串匹配时,则会有影响,需要严格保持一致

2、解决办法①,对string字符串对去除处理,缺点是需要在每个json转string的地方都加上,代码冗余,也容易遗漏

void func(std::string& str) {
    if (!str.empty() && str.back() == '\n') {
        str.pop_back(); 
    }
}

3、解决办法②,修改write源码,去掉里面的换行符,当然这个办法,在不了解jsoncpp的源码时,是比较危险的,而且jsoncpp里面的实现也较为复杂,通常不建议

找到jsoncpp_lib的工程,然后在源文件SourceFile目录中,找到FastWrite::Write函数,可以看到376和377行中,这里在文件结尾添加上了\n,将这两行屏蔽掉后,就不会出现添加的问题

屏蔽后,重新生成jsoncpp的dll,lib,然后把include\json文件夹下面的头文件拷贝到工程中,就可以发现json转string最后的换行符已经消失了,如果发现没有消失,可能是没有修改和图片上一样的位置,例如使用的函数为FastWriter::write函数,但是修改源码时,却修改的是StyledWriter::write或者StyledStreamWriter::write

4、同理如果使用python压缩源码的方式,也是直接修改json里面的函数实现即可,屏蔽掉FastWriter::write函数里面换行符相关

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值