二进制数据 JSONCPP.
Binary data JSONCPP
我正在尝试将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++ 以外的其他语言)对图像进行编码而没有问题。您只需要在编码的图像前面加上data:image/png;base64,
(假设它是 png),如果您将其设置为图像的 src,就可以在 javascript 中自动解码它。
编辑 :与任何其他语言一样,C++中的base64编码很容易。这是一个图书馆:https://github.com/ReneNyffenegger/development_misc/tree/master/base64
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 在c代码之间共享数据的最佳方式
- 链表,反向函数,数据结构
- 数据成员SFINAE的C++17测试:gcc vs clang
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 使用 JSONCPP 将 JSON 数据增量写入文件
- 使用 jsoncpp 时从 JSon 剥离私有数据的最佳方法
- 二进制数据 JSONCPP.
- 用C++和Jsoncpp解析youtube数据
- 如何使用jsonCpp查找JSON数据中的对象或数组的数量