Вопрос по visual-c++, c++, json – Двоичные данные JSONCPP

0

Я пытаюсь использовать JSON cpp с VS2008.

Может кто-нибудь сказать мне, возможно ли упаковать двоичные данные в формат 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 *. Пожалуйста, дайте мне знать, что не так с кодом. Благодарю.

Ваш Ответ

1   ответ
1

потому что JSON является подмножеством формата структур javascript, как это выглядит в исходном коде javascript.

Наиболее часто используемая кодировка для двоичных данных в JSON - это Base64. Я использую его (на других языках, кроме с ++) для кодирования изображений без проблем. Вы просто должны префикс закодированного изображения сdata:image/png;base64, (предположим, что это png), чтобы он автоматически декодировался в javascript, если вы установите его в качестве src изображения.

РЕДАКТИРОВАТЬ: как и в любом другом языке, кодирование base64 в C ++ легко. Вот библиотека:https://github.com/ReneNyffenegger/development_misc/tree/master/base64

спасибо ... я закодировал это в base64. Сейчас работает нормально. Pavan Kumar
Вы можете объяснить с точки зрения приведенного выше кода? где я ошибся? Pavan Kumar
Вы помещаете содержимое своего файла в свое значение и просите StyledWriter его кодировать. Как он должен знать, что должен добавить предложенный мной префикс и закодировать его в base64?

Похожие вопросы