C++实现json字符串与map的转换

C++实现json字符串与map的转换

开源资源库

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

string map2jsonstr(const map<string,string>& map_info){Json::Value jObject;for (map<string, string>::const_iterator iter = map_info.begin( ); iter != map_info.end( ); ++iter) {jObject[iter->first] = iter->second;}return jObject.toStyledString();}

2:jsonstr转化为map

string itoa_self(int i){stringstream ss;ss << i;return ss.str();}map<string,string> jsonstr2map(const string& json){Json::Reader reader;Json::Value value;map<string, string> maps;if (json.length() > 0) {if (reader.parse(json, value)) {Json::Value::Members members = value.getMemberNames();for (Json::Value::Members::iterator it = members.begin(); it != members.end(); it++) {  Json::ValueType vt = value[*it].type();switch (vt){case Json::stringValue:{maps.insert(pair<string, string>(*it, value[*it].asString()));break;}case Json::intValue:{int intTmp = value[*it].asInt();maps.insert(pair<string, string>(*it, itoa_self(intTmp)));break;}case Json::arrayValue:{std::string strid;for (unsigned int i = 0; i < value[*it].size(); i++){strid +=value[*it][i].asString();strid +=",";}if(!strid.empty()){strid = strid.substr(0,strid.size()-1);}maps.insert(pair<string, string>(*it, strid));break;}default:{break;}}//end switch}//end for}//end if}return maps;}

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部