Jsoncpp problems

Jsoncpp problems

本文关键字:problems Jsoncpp      更新时间:2023-10-16

我使用Jsoncpp来解析c++的json格式。我不明白它是如何工作的;缺乏文档和例子让我开始,我想知道是否有人可以给我一些快速的指针。我找到的唯一的例子是处理文件…

  1. 我使用HTTP堆栈在缓冲区中获取json消息。例如,一个缓冲区包含消息{"state":"Running"}。我如何使用Json::阅读器来解析这个?再一次,我发现的唯一的例子是从文件

  2. 读取的
  3. 如何将值写入json消息?例如,我想将"monkey : no""running : yes"写入json消息,然后我可以在GET请求中使用。

感谢更新:

例如,如何解析包含json消息的缓冲区,如下所示:
char* buff;
uint32_t buff_size;

也许这是你问题第一部分的好例子:

Json::Value values;
Json::Reader reader;
reader.parse(input, values);
Json::Value s = values.get("state","default value");

根本不缺文档。是的,它主要是参考文档,但它很好,而且交叉链接很好。

  1. 只要阅读文档
  2. 只要使用这个类或者使用其他类

示例代码供您参考,如下:

file.json

{
"B":"b_val2",
"A":{
        "AA":"aa_val1", 
        "AAA" : "aaa_val2",
        "AAAA" : "aaaa_val3"
     },
"C":"c_val3",
"D":"d_val4"
}

jsoncpp的使用场景如下,用于上面的示例json文件。

#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

此外,我还使用了" amalgamatay .py"来生成和使用上面示例源代码的jsoncpp。