Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了RapidJson 读写数据到文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 什么 Rapidjson ?

点击打开链接

2. 这里 有个教程 :

点击打开链接

3. 好了,这个是我自己写的:

#include "rapidjson/rapidjson.h"
#include "rapidjson/document.h"
#include "rapidjson/reader.h"
#include "rapidjson/writer.h"
#include "rapidjson/Stringbuffer.h"

#include <iostream>
#include <fstream>

#define psln(X) std::cout << #x " = " << (X) << std::endl

using namespace rapidjson;

class Myrapidjson
{
public:
	Myrapidjson(){};
	~Myrapidjson(){};
public:
	int  read(const char* jsonfilE);//step:1
	int  parse();//step:2

	int    Find(const char* find);
	int    AddMember(const char* Key,const char* value);
	int    convert_to_String();
	int    ReLoad(const char* jsonfilE);
private:
	rapidjson::Document    doc;
	std::string      		StringFromStream;
	std::ifstream    	   in;
	StringBuffer 			buffer;      // in rapidjson/Stringbuffer.h
};

int Myrapidjson::read(const char* jsonfilE){
    in.open(jsonfile,std::ifstream::in);
    if (!in.is_open())
        return -1;
    std::string line;
    while (getline(in,linE)) {
        StringFromStream.append(line + "\n");
    }
    in.close();

    parse();
    return  0;
}
int Myrapidjson::parse(){
    doc.Parse<0>(StringFromStream.c_str());
    if (doc.HasParseError()) {
        rapidjson::ParseErrorCode code = doc.GetParseError();
        psln(codE);
        return -1;
    }
    return 0;
}

int Myrapidjson::Find(const char* find){
	rapidjson::Value::ConstMemberIterator itr = doc.FindMember(find);
	if (itr != doc.MemberEnd()){
		 printf("%s\n",itr->value.GetString());
	}
   
	return 0;
}

int Myrapidjson::AddMember(const char* key,const char* values)
{	
	using rapidjson::Value;
    Value & v = doc["DictVersion"];
    if (v.IsInt()) {
        psln(v.GeTint());
    }

    Value & contents = doc["content"];
    if (contents.IsArray()) {
        for (size_t i = 0; i < contents.Size(); ++i) {
            Value & v = contents[i];
            assert(v.IsObject());
            if (v.HasMember("key") && v["key"].IsString()) {
                psln(v["key"].GetString());
            }
            if (v.HasMember("value") && v["value"].IsString()) {
                psln(v["value"].GetString());
            }
        }
    }
    psln("add a value into array");

    Value Key(rapidjson::kStringTypE);
    Key.SetString(key,doc.GetAllocator());


    Value StrValue(rapidjson::kStringTypE);
    StrValue.SetString(values,doc.GetAllocator());


	Value item(Type::kObjectTypE);
    item.AddMember(Key,StrValue,doc.GetAllocator());
    contents.PushBACk(item,doc.GetAllocator());

    //-------
    convert_to_String();
    return  0;
}

int Myrapidjson::convert_to_String(){
    Writer<StringBuffer> writer(buffer); // in rapidjson/writer.h
    doc.Accept(writer);

    psln(buffer.GetString());
    return  0;
}

int Myrapidjson::reLoad(const char* jsonfilE){
	FILE* file = fopen(jsonfile,"wb");
    if (filE)
    {
        fputs(buffer.GetString(),filE);
        fclose(filE);
    }else{
    	psln("ReLoad Failed");
    	return -1;
    }
    return  0;	
}

int main(int argc,char const *argv[])
{
	Myrapidjson     m_test;

	m_test.read("test.json");
	
	m_test.AddMember("key","word7");
	
	m_test.ReLoad("test.json");
	
	return 0;
}
转载请注明出处,谢谢!

大佬总结

以上是大佬教程为你收集整理的RapidJson 读写数据到文件全部内容,希望文章能够帮你解决RapidJson 读写数据到文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。