#include "jsoncpp/include/json.h"
//用网上下载的JSON类
Json::Value root;
Json::Value var;
Json::Value jFdata;
//比方说,一个目录级别如下:
c://files//testFile//datas//{1.text,2.text,3.text .4.text}
//生成的目录如下:
{"folders":"files","data":[{"folders":"testFile","data":[{"folders":"datas","data":[{"filename":"1.text"},{"filename":"2.text"},{"filename":"3.text"},{"filename":"4.text"}]}]}]}
CStringArry folderslist;//假设已经保存了所有的目录结构
folderslist.add("files");
folderslist.add("ftestFile");
folderslist.add("datas");
CStringArry fileslist;//假设已经保存了所有的目录结构
fileslist.add("1.text");
fileslist.add("2.text");
fileslist.add("3.text");
fileslist.add("4.text");
//先生成四个文件JSON
Json::Value jlData;
for(int ifilePos = 0;ifilePos<4,ifilePos++)
{
Json::Value piece_ex;//here it store just one piece
//next 4 lines to apply piece value to json struct
piece_ex["folders"] = fileslist.get(ifilePos );
jlData.append(piece_ex);//ok,yes we just have apply One piece ,then push back to the array
}
//生成嵌套JSON目录,从最深层往外生成
Json::Value jcFdata;
for(int iFoldersPos =2 ;iFoldersPos >=0 ;--iFoldersPos)
{
Json::Value jccData;
Json::Value jccRoot;
jccData["fname"] = folderslist.get(iFoldersPos );
if(iFoldersPos == listFolders.GetCount()-1)
{
jccData["folders"] = jlData;
}
else
{
jccData["folders"] = jcFdata;
}
jcFdata = jccData;
}
jFdata.append(jcFdata);
var["data"] = jFdata;//yes,store pieces in var [Value]
root.append(var);
Json::FastWriter writer;
CString szData(writer.write(var).c_str());