C++rapidjsonライブラリ解析json列


説明
stringタイプの文字列があり、文字列はjson列で、C++のrapidjsonライブラリを使用して解析されます.
コード#コード#
あなたのニーズに合わせてコードを自分で変更します.私はただの例です.
形式1
string内容は
{
	"store":
	[
		{
			"grid_corners":[0,1],
			"status":3
		},
		{
			"grid_corners":[5,6],
			"status":10
		}
	]
}
#include   
#include   
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/filewritestream.h"
#include "rapidjson/prettywriter.h"
#include "rapidjson/filereadstream.h"

int main(int argc, char** argv)  
{
       
	command_string = "{\"store\":[{\"grid_corners\":[0,1],\"status\":3},{\"grid_corners\":[5,6],\"status\":10}]}";
	
	char* json = (char*)command_string.c_str();
	rapidjson::Document document;
	document.Parse(json);
	
	int store_0_grid_0 = document["store"][0]["grid_corners"][0].GetInt();
	int store_0_grid_1 = document["store"][0]["grid_corners"][1].GetInt();
	int store_0_status = document["store"][0]["status"].GetInt();
	int store_1_grid_0 = document["store"][1]["grid_corners"][0].GetInt();
	int store_1_grid_1 = document["store"][1]["grid_corners"][1].GetInt();
	int store_1_status = document["store"][1]["status"].GetInt();
	
	std::cout<<store_0_grid_0<<std::endl;
	std::cout<<store_0_grid_1<<std::endl;
	std::cout<<store_0_status<<std::endl;
	std::cout<<store_1_grid_0<<std::endl;
	std::cout<<store_1_grid_1<<std::endl;
	std::cout<<store_1_status<<std::endl;

	return 1;  
}

出力は
0
1
3
5
6
10

形式2
{
	"store":[
		[	0,
			[1,2,3]
		],
		[
			[5,6,7,8,9],
			2
		],
		[1,2],
		[2,3]
	]
}

コードはご自身で調整してください
std::string command_string = "{\"store\":[[0,[1,2,3]],[[5,6,7,8,9],2],[1,2],[2,3]]}" ;

char* json = (char*)command_string.c_str();
rapidjson::Document document;
document.Parse(json);

if (document["store"].IsArray())
{
     
   std::cout<<document["store"][0].Size()<<std::endl;
   std::cout<<document["store"][0][1].Size()<<std::endl;
   std::cout<<document["store"][1][0][3].GetInt()<<std::endl;
}

しゅつりょく
2
3
8