RapidJson 读写数据到文件
发布时间:2020-12-16 19:48:05 所属栏目:百科 来源:网络整理
导读:1. 什么 Rapidjson ? 点击打开链接 2. 这里 有个教程 : 点击打开链接 3. 好了,这个是我自己写的: #include "rapidjson/rapidjson.h"#include "rapidjson/document.h"#include "rapidjson/reader.h"#include "rapidjson/writer.h"#include "rapidjson/stri
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("%sn",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; }转载请注明出处,谢谢! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |