二进制数据JSONCPP(Binary data JSONCPP)

2019-06-24 23:24发布

我想使用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 *是正确/错误。 请让我知道什么是错的代码。 谢谢。

Answer 1:

因为JSON是JavaScript的结构格式的子集,它出现在JavaScript源代码必须进行编码。

在JSON的二进制数据最常用的编码是Base64编码。 我用它(在C以外的语言++)为没有问题的编码图像。 您只需前缀编码的图像data:image/png;base64,假设它PNG)有它在JavaScript自动解码,如果你将其设置为图像的src。

编辑:如在任何其他语言,C ++ base64编码是容易的。 这里有一个库: https://github.com/ReneNyffenegger/development_misc/tree/master/base64



文章来源: Binary data JSONCPP