我正在使用Jsoncpp来解析c ++的json格式。 我不明白它是如何工作的;开始时缺乏文档和示例,我想知道是否有人能给我一些快速指示。我发现的唯一例子涉及文件...
我正在使用HTTP堆栈在缓冲区中获取json消息。例如,缓冲区包含消息{"state":"Running"}
。我如何使用Json :: reader来解析它?我发现的唯一一个例子就是从文件中读取
如何为Json消息写入值?例如,我想将"monkey : no"
和"running : yes"
写入Json消息,然后我可以在我的GET请求中使用它。
由于
更新:
on 1),例如,如何解析包含json消息的缓冲区,如下所示:
char* buff;
uint32_t buff_size;
答案 0 :(得分:6)
也许这是你问题第一部分的好样本:
Json::Value values;
Json::Reader reader;
reader.parse(input, values);
Json::Value s = values.get("state","default value");
答案 1 :(得分:2)
除了缺少文档之外什么都没有。是的,它主要是参考文档,但它非常好并且交叉链接很好。
答案 2 :(得分:1)
示例代码供您参考,如下:
file.json
{
"B":"b_val2",
"A":{
"AA":"aa_val1",
"AAA" : "aaa_val2",
"AAAA" : "aaaa_val3"
},
"C":"c_val3",
"D":"d_val4"
}
对于上面的示例json文件,jsoncpp使用场景如下所示。
#include <iostream>
#include "json/json.h"
#include <fstream>
using namespace std;
int main(){
Json::Value root;
Json::Reader reader;
const Json::Value defValue; //used for default reference
std::ifstream ifile("file.json");
bool isJsonOK = ( ifile != NULL && reader.parse(ifile, root) );
if(isJsonOK){
const Json::Value s = root.get("A",defValue);
if(s.isObject()){
Json::Value s2 = s.get("AAA","");
cout << "s2 : " << s2.asString() << endl;
}else{
cout << "value for key \"A\" is not object type !" << endl;
}
}
else
cout << "json not OK !!" << endl;
return 1;
}
<强>输出:强>
s2:aaa_val2
此外,我已使用"amalgamate.py"为上面的示例源生成和使用jsoncpp。