#include "../pch/pch.h" #include "CLewaimaiJson.h" CLewaimaiJson::CLewaimaiJson() { } CLewaimaiJson::~CLewaimaiJson() { } std::string CLewaimaiJson::JsonToString(const rapidjson::Value& valObj) { rapidjson::StringBuffer sbBuf; rapidjson::Writer jWriter(sbBuf); valObj.Accept(jWriter); return std::string(sbBuf.GetString()); } rapidjson::Document CLewaimaiJson::StringToJson(std::string jsonString, rapidjson::Document::AllocatorType &allocator) { rapidjson::Document document(&allocator); document.Parse(jsonString.c_str()); if (document.HasParseError()) { return false; } return document; } //把一个数组转化成json变量,数组的每个元素是一个map,map的key是json的名字,map的value是json的value rapidjson::Document CLewaimaiJson::ParamArrayToJson(std::vector> paramArray, rapidjson::Document::AllocatorType &allocator) { rapidjson::Document doc(&allocator); doc.SetArray(); for (std::vector>::iterator it = paramArray.begin(); it != paramArray.end(); it++) { rapidjson::Value array_object(rapidjson::kObjectType); for (std::map::iterator m_it = it->begin(); m_it != it->end(); m_it++) { Value key; Value value; key.SetString(m_it->first.c_str(), m_it->first.length(), allocator); value.SetString(m_it->second.c_str(), m_it->second.length(), allocator); array_object.AddMember(key, value, allocator); } doc.PushBack(array_object, allocator); } return doc; } //把一个数组转化成json字符串,数组的每个元素是一个map,map的key是json的名字,map的value是json的value std::string CLewaimaiJson::ParamArrayToJsonstring(std::vector> paramArray) { rapidjson::Document doc; rapidjson::Document::AllocatorType &allocator = doc.GetAllocator(); //获取分配器 Value& data = CLewaimaiJson::ParamArrayToJson(paramArray, allocator); rapidjson::StringBuffer buffer; rapidjson::Writer writer(buffer); data.Accept(writer); std::string result = buffer.GetString(); return result; } //把一个map转化成json字符串,map的key是json的名字,map的value是json的value std::string CLewaimaiJson::ParamMapToJsonstring(std::map param) { rapidjson::Document doc; rapidjson::Document::AllocatorType &allocator = doc.GetAllocator(); //获取分配器 doc.SetObject(); for (std::map::iterator m_it = param.begin(); m_it != param.end(); m_it++) { Value key; Value value; key.SetString(m_it->first.c_str(), m_it->first.length(), allocator); value.SetString(m_it->second.c_str(), m_it->second.length(), allocator); doc.AddMember(key, value, allocator); } rapidjson::StringBuffer buffer; rapidjson::Writer writer(buffer); doc.Accept(writer); std::string result = buffer.GetString(); return result; } std::string CLewaimaiJson::ToString(const rapidjson::Value& valObj) { if (valObj.IsString()) { return valObj.GetString(); } else if (valObj.IsInt()) { return to_string(valObj.GetInt()); } else if (valObj.IsDouble()) { return to_string(valObj.GetDouble()); } else { return ""; } } int CLewaimaiJson::ToInt(const rapidjson::Value& valObj) { if (valObj.IsString()) { return atoi(std::string(valObj.GetString()).c_str()); } else if (valObj.IsInt()) { return valObj.GetInt(); } else { return 0; } }