C++ rapidjson to convert map to json
- 2020-06-15 09:57:15
- OfStack
Life is short, I use rapidjson
Direct line code:
#include <iostream>
#include <map>
// Please download the open source one yourself rapidjson
#include "rapidjson/prettywriter.h"
#include "rapidjson/rapidjson.h"
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/writer.h"
#include "rapidjson/memorystream.h"
using namespace std;
using rapidjson::Document;
using rapidjson::StringBuffer;
using rapidjson::Writer;
using namespace rapidjson;
string test(const map<string, string> &m) // Notice that the const
{
Document document;
Document::AllocatorType& allocator = document.GetAllocator();
Value root(kObjectType);
Value key(kStringType);
Value value(kStringType);
for(map<string, string>::const_iterator it = m.begin(); it != m.end(); ++it) // Notice the use here const_iterator
{
key.SetString(it->first.c_str(), allocator);
value.SetString(it->second.c_str(), allocator);
root.AddMember(key, value, allocator);
}
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
root.Accept(writer);
return buffer.GetString();
}
int main(int argc, char *argv[])
{
map<string, string> m;
m["name"] = "taoge";
m["place"] = "shenzhen";
cout << test(m) << endl;
return 0;
}
Results:
[{"name":"taoge","place":"shenzhen"}
]Here, go on:
#include <iostream>
#include <map>
// Please download the open source one yourself rapidjson
#include "rapidjson/prettywriter.h"
#include "rapidjson/rapidjson.h"
#include "rapidjson/document.h"
#include "rapidjson/stringbuffer.h"
#include "rapidjson/writer.h"
#include "rapidjson/memorystream.h"
using namespace std;
using rapidjson::Document;
using rapidjson::StringBuffer;
using rapidjson::Writer;
using namespace rapidjson;
string test(const map<string, int> &mInt, const map<string, string> &mString) // Notice that the const
{
Document document;
Document::AllocatorType& allocator = document.GetAllocator();
Value root(kObjectType);
Value key(kStringType);
Value value(kStringType);
for(map<string, int>::const_iterator it = mInt.begin(); it != mInt.end(); ++it) // Notice the use here const_iterator
{
key.SetString(it->first.c_str(), allocator);
root.AddMember(key, it->second, allocator);
}
for(map<string, string>::const_iterator it = mString.begin(); it != mString.end(); ++it) // Notice the use here const_iterator
{
key.SetString(it->first.c_str(), allocator);
value.SetString(it->second.c_str(), allocator);
root.AddMember(key, value, allocator);
}
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
root.Accept(writer);
return buffer.GetString();
}
int main(int argc, char *argv[])
{
map<string, int> mInt;
mInt["age"] = 29;
mInt["score"] = 80;
map<string, string> mString;
mString["name"] = "taoge";
mString["place"] = "shenzhen";
cout << test(mInt, mString) << endl;
return 0;
}
Results:
[{"age":29,"score":80,"name":"taoge","place":"shenzhen"}
]Not much said.
conclusion