gpt4 book ai didi

c++ - 二进制数据 JSONCPP

转载 作者:行者123 更新时间:2023-11-28 08:03:21 33 4
gpt4 key购买 nike

我正在尝试将 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 * 缓冲区是对还是错。请让我知道代码有什么问题。谢谢。

最佳答案

您必须对其进行编码,因为 JSON 是出现在 javascript 源代码中的 javascript 结构格式的子集。

JSON 中最常用的二进制数据编码是 Base64。我使用它(用 c++ 以外的其他语言)来毫无问题地编码图像。如果将其设置为图像的 src,您只需在编码后的图像前加上 data:image/png;base64,(假设它是 png)即可在 javascript 中自动对其进行解码。

编辑:与任何其他语言一样,C++ 中的 base64 编码很容易。这是一个图书馆:https://github.com/ReneNyffenegger/development_misc/tree/master/base64

关于c++ - 二进制数据 JSONCPP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812053/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com