rapidjson 解析字符串后如何去掉斜线 “\/aaa" 变成"/aaa
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rapidjson 解析字符串后如何去掉斜线 “\/aaa" 变成"/aaa相关的知识,希望对你有一定的参考价值。
你这个不算标准的JSON格式数据,可以先将\"替换成"即可。再用json_decode()系统函数将其转为json对象,如需转为数组加上第二个参数为true即可。
若仍输出为NULL,是由于存在BOM头信息,
$arr = json_decode(trim($json,chr(239).chr(187).chr(191)),true);
转换即可。 参考技术A 请问,rapidjson 解析字符串后如何去掉斜线 “\/aaa" 变成"/aaa"
如果是python ,json.loads 后,会直接将字符串的转义符去掉,但是rapidjson却没有,看了源代码,也没找到哪个接口能完成。
RapidJSON解析数组
一 简介
RapidJSON是腾讯开源的一个高效的C++ JSON解析器及生成器,它是只有头文件的C++库,所以使用cmake非常好用。RapidJSON是跨平台的,支持Windows, Linux, Mac OS X及iOS, Android。
GitHub地址
二 经验
json串
"info":
"description": "This is v1.0 of the VQA dataset.",
"license":
"questions":[
"question": "What is the table made of?",
"image_id": 350623,
"question_id": 3506232,
"question": "Is the food napping on the table?",
"image_id": 350623,
"question_id": 3506230]
解析获得questions中的question
#include "rapidjson/document.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
#include <fstream>
#include <string>
int main()
rapidjson::Document document; // 定义一个Document对象
std::string str = "";
document.Parse(str.c_str()); // 解析,Parse()无返回值,也不会抛异常
if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功
// 可通过GetParseError()取得出错代码,
// 注意GetParseError()返回的是一个rapidjson::ParseErrorCode类型的枚举值
// 使用函数rapidjson::GetParseError_En()得到错误码的字符串说明,这里的En为English简写
// 函数GetErrorOffset()返回出错发生的位置
printf("parse error: (%d:%d)%s\\n", document.GetParseError(), document.GetErrorOffset(), rapidjson::GetParseError_En(document.GetParseError()));
return -1;
else
if(document.HasMember("info"))
const rapidjson::Value& obj = document["info"];
if(obj.HasMember("license"))
const rapidjson::Value& license= obj["license"];
if(license.HasMember("questions")&&
license["questions"].IsArray())
auto questions = license["questions"].GetArray();
for(int i=0; i <questions.Size();i++)
if(questions[i].HasMember("question")&&
questions[i]["question"].IsString())
std::string strQuestion = questions[i]["question"].GetString();
return 0;
三 总结
不清楚的类型全是auto `····
以上是关于rapidjson 解析字符串后如何去掉斜线 “\/aaa" 变成"/aaa的主要内容,如果未能解决你的问题,请参考以下文章