0

VS2008でJSONcppを使用しようとしています。

バイナリデータをJSON形式にパックすることは可能ですか?画像ファイルをに読み込んchar* bufferで、に入れていJSON::Valueます。しかし、それを解析しようとすると、JSONオブジェクトにバッファーの内容が見つかりません。

コードは以下の通りです。

    Json::Value root;
    Json::Reader reader;
    Json::StyledWriter writer;
    int length;
    char * buffer;
    ifstream is;
    is.open ("D:\\test.j2k", ios::binary);

    // get length of file:
    is.seekg (0, ios::end);
    length = is.tellg();
    is.seekg (0, ios::beg);

    // allocate memory:
    buffer = new char [length];

    // read data as a block:
    is.read (buffer,length);
    root["sample"] = *buffer;
    writer.write(root);  
    cout << root;
    const string rootAsString  = root.toStyledString();
    cout << rootAsString << endl;

私はVC++を初めて使用するため、char*bufferへの画像ファイルの読み取りが正しいか間違っているかわかりません。コードのどこが悪いのか教えてください。ありがとう。

4

1 に答える 1

2

JSONはjavascriptソースコードに表示されるjavascript構造形式のサブセットであるため、エンコードする必要があります。

JSONのバイナリデータで最も頻繁に使用されるエンコーディングはBase64です。私はそれを(c ++以外の言語で)問題なく画像をエンコードするために使用しています。これを画像のsrcに設定した場合、JavaScriptで自動的にデコードされるようにするには、エンコードされた画像にプレフィックスを付ける必要がありますdata:image/png;base64,(pngの場合)。

編集:他の言語と同様に、C++でのbase64エンコーディングは簡単です。これがライブラリです:https ://github.com/ReneNyffenegger/development_misc/tree/master/base64

于 2012-05-30T07:47:01.543 に答える