簡體   English   中英

Jsoncpp的問題

[英]Jsoncpp problems

我正在使用Jsoncpp來解析c ++的json格式。 我不明白它是如何工作的; 開始時缺乏文檔和示例,我想知道是否有人能給我一些快速指示。 我發現的唯一例子涉及文件......

  1. 我正在使用HTTP堆棧在緩沖區中獲取json消息。 例如,緩沖區包含消息{"state":"Running"} 我如何使用Json :: reader來解析它? 我發現的唯一例子就是從文件中讀取文件

  2. 你如何寫一個Json消息的值? 例如,我想在Json消息中寫入"monkey : no""running : yes" ,然后我可以在我的GET請求中使用它。

謝謝

更新:

1),例如,如何解析包含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

另外,我使用了“amalgamate.py”來生成和使用上面的示例源的jsoncpp。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM