jsoncpp,rapidjson语法整理

前端之家收集整理的这篇文章主要介绍了jsoncpp,rapidjson语法整理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

项目中需要将jsoncpp转为rapidjson (经过测试,rapidjson解析性能优于jsoncpp),现将两者语法整理分享

推荐:rapidjson官方中文文档http://miloyip.github.io/rapidjson/zh-cn/

file.json:















{file: {key: "value",array: [{key00: "value00",key01: "value01"  },{key10: "value10",key11: "value11"}]}}

rapidjson语法:

#include <iostream>
#include <fstream>
#include <sstream>
#include "rapidjson/rapidjson.h"
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/writer.h"

int main()
{
	//读取文件
	std::fstream fs("file.json");
	if(!fs)
		std::cout<<std::endl<<"file open Failed"<<std::endl;
	std::stringstream ss;
	ss << fs.rdbuf();
	std::string str = ss.str();

	//解析
	rapidjson::Document doc;
	if (doc.Parse(str.c_str()).HasParseError())
		std::cout<<std::endl<<"parse Failed"<<std::endl;

	rapidjson::Document::AllocatorType&allocator = doc.GetAllocator();   // 获取最初数据的分配器
	
	//增加元素
	doc["file"].AddMember("key2","value2",allocator);
	
	//删除元素
	doc["file"].RemoveMember("key");

	//修改值
	doc["file"]["key2"].SetString("newValue");

	//数组操作//

	rapidjson::Value& array = doc["file"]["array"];//获取数组对象
	//添加数组对象
	rapidjson::Value item(rapidjson::kObjectType); //创建数组里面对象
	item.AddMember("key20","value20",allocator);
	item.AddMember("key21","value21",allocator);
	array.PushBack(item,allocator);
	
	//读取数组元素
	if(array[2].HasMember("key20"))//查找是否存在
		std::cout<<std::endl<<array[2]["key20"].GetString()<<std::endl;

	//删除数组最后一个元素
	array.PopBack();

	//输出
	rapidjson::StringBuffer buffer;
	rapidjson::Writer< rapidjson::StringBuffer > writer(buffer);
	doc.Accept(writer);
	std::string out = buffer.GetString();

	std::cout<<std::endl<<out<<std::endl;

}

jsoncpp语法:

#include <iostream>
#include <fstream>
#include <jsoncpp/jsoncpp.h>

int main()
{
	//读取文件
	std::fstream fs("file.json");	

	if(!fs)
		std::cout<<std::endl<<"file open Failed"<<std::endl;
	//解析
	Json::Reader reader;
	Json::Value root;

	if(!reader.parse(fs,root))
		std::cout<<std::endl<<"parse Failed"<<std::endl;

	//修改元素值
	root["file"]["key"] = Json::Value("1");

	//删除元素
	root["file"].removeMember("key");

	//添加元素
	root["file"]["key2"] = Json::Value("value2");
	
	//数组操作
	Json::Value& array = root["file"]["array"];  //获取数组
	
	//删除,读取数组元素
	for(int i = 0; i < array.size(); i++)
	{
		if(array[i].isMember("key00"))
			array[i].removeMember("key00");

		if(!array[i].isMember("key01"))
				continue;
		std::string out = array[i]["key01"].asString();
		std::cout<<std::endl<<"key01:  "<<out<<std::endl;
	}

	//插入数组元素
	Json::Value item(Json::objectValue);
	item["key20"] = Json::Value("value20");
	item["key21"] = Json::Value("value21");
	
	array.append(item);
	
	//输出
	std::string out = root.toStyledString();
	std::cout<<std::endl<<out<<std::endl;
}

猜你在找的Json相关文章