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的主要内容,如果未能解决你的问题,请参考以下文章

RapidJSON简介及使用

RapidJSON简介及使用

rapidjson常见使用示例

rapidjson解析与构造实例

c++ rapidjson读取json文件 解析

C/C++C++Json解析和生成的开源库:RapidJson和JsonCpp