boost管理Json(递归方式来生成json)

void CreateJson(std::string dir, std::unique_ptr<WebDAV::Client> &client, wptree *pt)
{
	//假设第一层

	//if (!client->is_directory(dir));
	//	{return;}
	std::vector<std::string> resources = client->list(dir);
	int i = 0;
//	wptree pt1;/*一个子结点*/
//	int i = 0;
	//加入一直都是文件夹的话,没有文件  如果全都是文件/如果有一个文件夹
//	wptree node_items;
	for (size_t i = 1; i < resources.size(); i++)   /*结构顺序是: 母文件夹 pt包含:node1(items),node2(items) 恩是这样的*/
	{
		wptree node_item; /*一个个文件的属性*/   
		std::wstring source = ConvertAnsiToWString(resources.at(i));
		node_item.put(L"name", source); /*前面是个常量,我这里是个变量?,多加一些map 把子文件件中所有的属性都加进来,但是有没有增删查改功能?本地json*/
		std::string fullPath = dir + resources.at(i); //需要用全路径
	//	std::map<std::string, std::string> info = client->info(resources.at(i));
		std::map<std::string, std::string> info = client->info(fullPath);
	//	info.at("name") = resources.at(i);
		std::wstring size = ConvertAnsiToWString(info.at("size"));
		std::wstring modified = ConvertAnsiToWString(info.at("modified"));
		std::wstring type = ConvertAnsiToWString(info.at("type"));
		info.at("name") = resources.at(i);
		if (info.at("type") == "") //如果是不是文件夹
		{
	//		wptree pt, pt1, pt2, pt3;
			node_item.put(L"size", size);
			node_item.put(L"modified", modified);
			node_item.put(L"type", type);
			wptree node_items;
			node_items.push_back(make_pair(L"", node_item));
		//	item.put(L"name", source);
		//	wptree pt1;
		//	pt1.push_back(make_pair(L"", item)); //还必须搞成pair类型的,然后跟map一样加进里面
		//	pt->put_child(L"Children", node); /*为什么会把名字和格式拆成两部分?*/
		//	std::string fullpath = dir + info.at("name");
			std::size_t pos = info.at("name").find(".");
			std::string substr = info.at("name").substr(0,pos);

			std::wstring dirname = ConvertAnsiToWString(substr);
			
		//	pt->add_child(dirname, node_item);
			pt->add_child(dirname, node_items);
		}
		else
		{
			node_item.put(L"size", size);
			node_item.put(L"modified", modified);
			node_item.put(L"type", type);
		//	node_item.push_back(make_pair(source, node_item));
		//	item.put(L"name", source);
			//如果是文件夹的话,直接在下面加items。
			std::wstring dirname = ConvertAnsiToWString(fullPath);
			pt->add_child(dirname, node_item);
		//	dir = dir + info.at("name"); 
			pt = &pt->get_child(dirname, node_item);/*结点之间传递*/
			dir = dir + info.at("name");
			CreateJson(dir, client, pt);
		//	int i = 0;
		}	
		
	}
//	std::wstring dirname = ConvertAnsiToWString(dir);
//	pt->put_child(dirname, node_items);
	//pt应该会不断的再换,加入一直都是路径的话
//	pt.put_child(L"Children", pt1);/*那么第二个孩子呢?他结构是什么? 可能跟自己想的不一样*/
//	pt = pt1;
	/*第二个孩子*/
/*	std::wstringstream wstream;
	std::wstring wstr;
	write_json(wstream, *pt);
	wstr = wstream.str();
	std::wofstream f;
	f.open(L"D:\\ProgramFiles\\project\\GreenValleyCloudPlatform\\x64\\Debug\\json.txt");
	f << wstr;
	f.close();*/
	return;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值