1、下载jsonapp 0.5
https://github.com/open-source-parsers/jsoncpp
2、编译
platform 没有包含 arm 平台,需要把源码提取出来,独立编译,在/opt目录下新建目录jsoncpp,将源码中的include目录和src/lib_json目录下的所有文件拷贝到jsoncpp目录下,再运行以下命令:
arm-linux-gnueabihf-g++ -C *.cpp -I./include -fPIC
ar cr libjson_arm_gnueabihf.a *.o
这时会在jsoncpp目录下生成libjson_arm_gnueabihf.a库
注:
-fPIC:表明使用地址无关代码。PIC:Position Independent Code
include/json目录下的头文件和libjson_arm_gnueabihf.a文件一起放在Qt工程中。
3、jsoncpp的使用
- 从字符串解释json
void ParseJsonFromString()
{
const char* str = "{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"\",\"files\": \"\"}";
Json::Reader reader;
Json::Value root;
if (reader.parse(str, root)) // reader将Json字符串解析到root,root将包含Json里所有子元素
{
std::string upload_id = root["uploadid"].asString(); // 访问节点,upload_id = "UP000000"
int code = root["code"].asInt(); // 访问节点,code = 100
}
return 0;
}
- 生成json字符串
Json::FastWriter writer;
Json::Value root;
root["uploadid"] = "UP000000";
root["code"] = 100;
root["msg"] = "\";
root["files"] = "\";
std::string str = writer.write(root);
str内容为“{\"uploadid\": \"UP000000\",\"code\": 100,\"msg\": \"\",\"files\": \"\"}”;