CLewaimaiJson.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include "../pch/pch.h"
  2. #include "CLewaimaiJson.h"
  3. CLewaimaiJson::CLewaimaiJson()
  4. {
  5. }
  6. CLewaimaiJson::~CLewaimaiJson()
  7. {
  8. }
  9. std::string CLewaimaiJson::JsonToString(const rapidjson::Value& valObj)
  10. {
  11. rapidjson::StringBuffer sbBuf;
  12. rapidjson::Writer<rapidjson::StringBuffer> jWriter(sbBuf);
  13. valObj.Accept(jWriter);
  14. return std::string(sbBuf.GetString());
  15. }
  16. rapidjson::Document CLewaimaiJson::StringToJson(std::string jsonString, rapidjson::Document::AllocatorType &allocator)
  17. {
  18. rapidjson::Document document(&allocator);
  19. document.Parse(jsonString.c_str());
  20. if (document.HasParseError())
  21. {
  22. return false;
  23. }
  24. return document;
  25. }
  26. //把一个数组转化成json变量,数组的每个元素是一个map,map的key是json的名字,map的value是json的value
  27. rapidjson::Document CLewaimaiJson::ParamArrayToJson(std::vector<std::map<string, string>> paramArray, rapidjson::Document::AllocatorType &allocator)
  28. {
  29. rapidjson::Document doc(&allocator);
  30. doc.SetArray();
  31. for (std::vector<std::map<string, string>>::iterator it = paramArray.begin(); it != paramArray.end(); it++)
  32. {
  33. rapidjson::Value array_object(rapidjson::kObjectType);
  34. for (std::map<string, string>::iterator m_it = it->begin(); m_it != it->end(); m_it++)
  35. {
  36. Value key;
  37. Value value;
  38. key.SetString(m_it->first.c_str(), m_it->first.length(), allocator);
  39. value.SetString(m_it->second.c_str(), m_it->second.length(), allocator);
  40. array_object.AddMember(key, value, allocator);
  41. }
  42. doc.PushBack(array_object, allocator);
  43. }
  44. return doc;
  45. }
  46. //把一个数组转化成json字符串,数组的每个元素是一个map,map的key是json的名字,map的value是json的value
  47. std::string CLewaimaiJson::ParamArrayToJsonstring(std::vector<std::map<string, string>> paramArray)
  48. {
  49. rapidjson::Document doc;
  50. rapidjson::Document::AllocatorType &allocator = doc.GetAllocator(); //获取分配器
  51. Value& data = CLewaimaiJson::ParamArrayToJson(paramArray, allocator);
  52. rapidjson::StringBuffer buffer;
  53. rapidjson::Writer<StringBuffer> writer(buffer);
  54. data.Accept(writer);
  55. std::string result = buffer.GetString();
  56. return result;
  57. }
  58. //把一个map转化成json字符串,map的key是json的名字,map的value是json的value
  59. std::string CLewaimaiJson::ParamMapToJsonstring(std::map<string, string> param)
  60. {
  61. rapidjson::Document doc;
  62. rapidjson::Document::AllocatorType &allocator = doc.GetAllocator(); //获取分配器
  63. doc.SetObject();
  64. for (std::map<string, string>::iterator m_it = param.begin(); m_it != param.end(); m_it++)
  65. {
  66. Value key;
  67. Value value;
  68. key.SetString(m_it->first.c_str(), m_it->first.length(), allocator);
  69. value.SetString(m_it->second.c_str(), m_it->second.length(), allocator);
  70. doc.AddMember(key, value, allocator);
  71. }
  72. rapidjson::StringBuffer buffer;
  73. rapidjson::Writer<StringBuffer> writer(buffer);
  74. doc.Accept(writer);
  75. std::string result = buffer.GetString();
  76. return result;
  77. }