RapidJSON解析数组

Posted GreedySnaker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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解析数组的主要内容,如果未能解决你的问题,请参考以下文章

rapidjson常见使用示例

RapidJSON简介及使用

RapidJSON简介及使用

rapidjson解析与构造实例

c++ rapidjson读取json文件 解析

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