3

私は Jsoncpp を使用して、C++ の json 形式を解析しています。ただし、それがどのように機能するかわかりません。私が始めるためのドキュメントと例が不足しており、誰かが私に簡単な指針を教えてくれるかどうか疑問に思っていました. 私が見つけた唯一の例は、ファイルを扱っています...

  1. HTTP スタックを使用して、バッファ内の json-message を取得しています。たとえば、バッファにはメッセージが含まれています{"state":"Running"}。Json::reader を使用してこれを解析するにはどうすればよいですか? 繰り返しますが、私が見つけた唯一の例は、ファイルからの読み取りに関するものです

  2. Json メッセージに値を書き込むにはどうすればよいですか? たとえば、GET リクエストで使用できる Json メッセージに書き込みたい"monkey : no"とします。"running : yes"

ありがとう

アップデート:

1) では、たとえば、次のような json メッセージを含むバッファーを解析する方法は次のとおりです。

char* buff;
uint32_t buff_size;
4

3 に答える 3

6

多分これはあなたの質問の最初の部分の良いサンプルです:

Json::Value values;
Json::Reader reader;
reader.parse(input, values);

Json::Value s = values.get("state","default value");
于 2011-09-26T11:46:44.360 に答える
2

ドキュメントの欠如以外には何もありません。はい、主に参照ドキュメントですが、非常に優れており、相互リンクも充実しています。

  1. ドキュメントを読むだけ
  2. このクラスを使用するか、他のクラスを使用する可能性があります
于 2011-09-26T11:42:29.930 に答える
1

以下の参照用のサンプルコード:

ファイル.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

さらに、上記のサンプル ソースの jsoncpp を生成して使用するために、 「amalgamate.py」を使用しました。

于 2015-12-21T12:41:18.863 に答える