How to use json::array - renxiaobo27/json GitHub Wiki

#include <iostream>
#include "json.hpp"

// for convenience
using json = nlohmann::json;

class BBX
{
public:
	int x1;
	int x2;
	int y1;
	int y2;
BBX(int ix1,int ix2,int iy1,int iy2){x1=ix1;x2=ix2;y1=iy1;y2=iy2;}
};


class Scene
{
public:
	std::string scene_name;
	double score;
	Scene(std::string name,double iscore):scene_name(name),score(iscore){}
};

class Item
{
public:
	std::string itemName;
	BBX bbx;
	double score;

	Item(std::string name,BBX ibbx,double iscore):itemName(name),bbx(ibbx),score(iscore){}
};


class Model
{
public :
	std::string image_name;
	std::string drawn_image_abspath;
	std::vector<Item>items;
	std::vector<Scene> scenes;

	Model(std::string imageName,std::string drawnPath):image_name(imageName),drawn_image_abspath(drawnPath){}

	void add_item(Item item)
	{
		items.push_back(item);
	}
	void add_scene(Scene scene)
	{
		scenes.push_back(scene);
	}
};

void gen_json_items(json &j,const Model model)
{
	j["items"] = json::array();
	for(int i=0;i<model.items.size();i++)
	{
		j["items"][i]["item_name"] = model.items[i].itemName;
		j["items"][i]["bbx"]["x1"] = model.items[i].bbx.x1;
		j["items"][i]["bbx"]["y1"] = model.items[i].bbx.y1;
		j["items"][i]["bbx"]["x2"] = model.items[i].bbx.x2;
		j["items"][i]["bbx"]["y2"] = model.items[i].bbx.y2;
		j["items"][i]["score"] = model.items[i].score;
	}
}
void gen_json_sences(json &j, const Model model)
{
	j["scenes"] = json::array();
	for(int i=0;i<model.scenes.size();i++)
	{

		j["scenes"][i]["score"] = model.scenes[i].score;
		j["scenes"][i]["scene_name"] = model.scenes[i].scene_name;
	}
}

int main()
{
	Item item("person",BBX(2,3,4,5),0.4);
	Item item2("xx",BBX(2,3,14,51),0.4);
	Scene scene("shopping",0.8);

	Model model("imageName","absPath");
	model.add_item(item);
	model.add_item(item2);
	model.add_scene(scene);


	json j;
	j["image_name"] = model.image_name;
	j["drawn_image_abspath"] = model.drawn_image_abspath;



	gen_json_sences(j,model);
	gen_json_items(j,model);

	std::cout<<j.dump()<<std::endl;
	return 0;
}

⚠️ **GitHub.com Fallback** ⚠️