经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C++实现json字符串与map的转换
来源:cnblogs  作者:from2019  时间:2019/1/30 9:42:25  对本文有异议

开源资源库

jsoncpp-src-0.5.0.tar.gz:
https://sourceforge.net/projects/jsoncpp/

jsoncpp-master.zip
https://github.com/open-source-parsers/jsoncpp

下面以jsoncpp050版本为例

1:map转化为jsonstr

  1. string map2jsonstr(const map<string,string>& map_info)
  2. {
  3. Json::Value jObject;
  4. for (map<string, string>::const_iterator iter = map_info.begin( ); iter != map_info.end( ); ++iter)
  5. {
  6. jObject[iter->first] = iter->second;
  7. }
  8. return jObject.toStyledString();
  9. }

2:jsonstr转化为map

  1. string itoa_self(int i)
  2. {
  3. stringstream ss;
  4. ss << i;
  5. return ss.str();
  6. }
  7.  
  8. map<string,string> jsonstr2map(const string& json)
  9. {
  10. Json::Reader reader;
  11. Json::Value value;
  12. map<string, string> maps;
  13.  
  14. if (json.length() > 0)
  15. {
  16. if (reader.parse(json, value))
  17. {
  18. Json::Value::Members members = value.getMemberNames();
  19. for (Json::Value::Members::iterator it = members.begin(); it != members.end(); it++)
  20. {
  21. Json::ValueType vt = value[*it].type();
  22. switch (vt)
  23. {
  24. case Json::stringValue:
  25. {
  26. maps.insert(pair<string, string>(*it, value[*it].asString()));
  27. break;
  28. }
  29. case Json::intValue:
  30. {
  31. int intTmp = value[*it].asInt();
  32. maps.insert(pair<string, string>(*it, itoa_self(intTmp)));
  33. break;
  34. }
  35. case Json::arrayValue:
  36. {
  37. std::string strid;
  38. for (unsigned int i = 0; i < value[*it].size(); i++)
  39. {
  40. strid +=value[*it][i].asString();
  41. strid +=",";
  42. }
  43. if(!strid.empty())
  44. {
  45. strid = strid.substr(0,strid.size()-1);
  46. }
  47. maps.insert(pair<string, string>(*it, strid));
  48. break;
  49. }
  50. default:
  51. {
  52. break;
  53. }
  54. }//end switch
  55. }//end for
  56. }//end if
  57. }
  58.  
  59. return maps;
  60. }

  

 

原文链接:http://www.cnblogs.com/manongdashu/p/10334496.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号