🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### 环境 ***** 源码下载 [GITHUB](https://github.com/open-source-parsers/jsoncpp) ### jsoncpp的使用 使用jsoncpp创建json对象 ```c++ //将字段里面的数据转化为string 类型 string rc = root["msg"].toStyledString(); #pragma comment(lib, "lib_json.lib") int main() { std::string strValue = "{\"key\":\"value1\",\"array\":[{\"arraykey\":1},{\"arraykey\":2}]}"; Json::Reader reader; Json::Value root; // reader将Json字符串解析到root,root将包含Json里所有子元素 if (reader.parse(strValue, root)) { if (!root["key"].isNull()) { std::string strValue= root["key"].asString(); std::cout << strValue<< std::endl; } Json::Value arrayObj = root["array"]; for (int i=0; i<arrayObj.size(); i++) { int iarrayValue = arrayObj[i]["arraykey"].asInt(); std::cout << iarrayValue << std::endl; } } system("pause"); return 0; } ``` 构建Json对象序列化为字符串 ```c++ int main() { Json::Value root; Json::Value arrayObj; Json::Value item; root["key"] = "value1"; for (int i=0; i<10; i++) { item["arraykey"] = i; arrayObj.append(item); //添加新的数组成员 } root["array"] = arrayObj; std::string out = root.toStyledString(); //将Json对象序列化为字符串 std::cout << out << std::endl; system("pause"); return 0; } ``` 清空Json对象中的数组 ***** ```c++ root["array"].resize(0); ``` 删除Json对象 ```c++ root.removeMember("key"); ``` ### 解决中文转码的问题 ***** ```c++ name = value[i]["name"].asString(); //解决中文转码问题 int len = strlen(name.c_str())+1; char outch[MAX_PATH]; WCHAR * wChar = new WCHAR[len]; wChar[0] = 0; MultiByteToWideChar(CP_UTF8, 0, name.c_str(), len, wChar, len); WideCharToMultiByte(CP_ACP, 0, wChar, len, outch , len, 0, 0); delete [] wChar; char* pchar = (char*)outch; len=strlen(pchar)+1; WCHAR outName[MAX_PATH]; MultiByteToWideChar(CP_ACP, 0, pchar, len, outName, len); AfxMessageBox(outName); ```