Json库

来源:互联网 发布:麻瓜 python 编辑:程序博客网 时间:2024/05/21 09:34

选择第三方库JsonCpp来解析json,JsonCpp是比较出名的c++解析库,在json官网也是首推的。下载地址是:http://sourceforge.net/projects/jsoncpp/。或者到http://download.csdn.net/detail/wklnewlife/4008660
注意: Json::Value只能处理ANSI类型的字符串,如果C++程序使用Unicode编码的,最好加一个Adapt类来适配。

实例:

void CJSONDlg::OnBnClickedOk(){// TODO: 在此添加控件通知处理程序代码//OnOK();//解析json字符串std::string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\"jsoncpp\"},{\"java\":\"jsoninjava\"},{\"php\":\"support\"}]}";Json::Reader reader;Json::Value value;if (reader.parse(strValue, value)){std::string out = value["name"].asString();AfxMessageBox(CString(out.c_str()));const Json::Value arrayObj = value["array"];for (unsigned int i=0;i<arrayObj.size(); i++){if (!arrayObj[i].isMember("cpp")){continue;}out = arrayObj[i]["cpp"].asString();AfxMessageBox(CString(out.c_str()));}}//序列化json对象Json::Value root;Json::Value arrayObj;Json::Value item;item["cpp"] = "jsoncpp";  item["java"] = "jsoninjava";  item["php"] = "support";  arrayObj.append(item);  root["name"] = "json";  root["array"] = arrayObj;  std::string out= root.toStyledString();  AfxMessageBox(CString(out.c_str()));}

补充:具体sting和cstring转换详见《c/c++随笔》

原创粉丝点击