在VC中生成嵌套JSON

#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());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值