c++ jsoncpp操作

#include <iostream>
#include "json.h"
#include <string>
#include <fstream>


using namespace std;




int ParaseJsonFormFile(string filename)
{
Json::Reader reader; //解析json要用到Json::Reader
Json::Value  root;//Json::Value是一种很重要的类型,可以代表任意类型,如int,string,ojbect,array...


ifstream file;
file.open(filename,ios::binary);
if(reader.parse(file,root))
{
string code;
if(!root["files"].isNull())
{
code  = root["uploadid"].asString();


}
int file_size = root["files"].size();
for(int i = 0;i < file_size;++i)
{
Json::Value val_image = root["files"] [i]["images"];
int image_size = val_image.size();
for(int j = 0 ;j < image_size;++j)
{
string  type = val_image[j]["type"].asString();
string url = val_image[j]["url"].asString();
cout << "type: " << type << " url:" << url << endl;


}


}


Json::Value arrayobj; //构建对象
Json::Value  new_item,new_item1;
Json::Value item;
Json::Value arrayObj;
item["cpp"] = "jsoncpp";
item["java"] = "jsoninjava";
item["php"] = "support";
arrayObj.append(item);


root["array"] = arrayObj;


new_item["date"] = "2012-12-28";
new_item1["time"] = "22:30:36";


arrayobj.append(new_item);
arrayobj.append(new_item1);
// root["date"] = "2012012028";


/*int files_size = root["files"].size();
for(int i = 0 ;i < files_size;++i)
root["files"][i]["exifs"] = arrayobj;*/
// code  = root.get("uploadidaaa","null").asString();
//cout << file_size << endl;
}
string out = root.toStyledString();//按样式输出
cout << out << endl;


Json::FastWriter write;
string out2 = write.write(root);
cout << out2 << endl;


file.close();
return 0;
}


int main(void)
{
ParaseJsonFormFile("C:\\jsonTest.txt");
return 0;

}


jsonTest.txt


{"uploadid": "UP000000","code": "0","msg": "","files": [{"code": "0","msg": "","filename": "1D_16-35_1.jpg","filesize": "196690","width": "1024","height": "682","images": [{"url": "fmn061/20111118","type": "large","width": "720","height": "479"},{"url": "fmn061/20111118","type": "main","width": "200","height": "133"}]}]}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值