-
Notifications
You must be signed in to change notification settings - Fork 72
Advanced (zh)
haibo2.liu edited this page Sep 29, 2022
·
2 revisions
若你需要将 JSON 解析和序列化应用到非 std::basic_stream 流中,可以通过实现自定义 oadapter
和 iadapter
的方式。
一个 oadapter 的例子:
struct myadapter : public oadapter
{
// 实现 write 接口,写入一个字符
virtual void write(const char ch) override
{
// 直接输出到屏幕
std::cout << ch;
}
};
// 使用方式
myadapter ma;
oadapterstream os{ ma };
json::dump(os, j); // 将 json j 序列化输出到屏幕上
一个 iadapter 的例子:
struct myadapter : public iadapter
{
// 实现 read 接口,读取一个字符
virtual char read() override
{
// 直接从用户输入读取字符,读到换行符结束
char ch = std::cin.get();
if (ch == '\n')
return std::char_traits<char>::eof();
return ch;
}
};
// 使用方式
myadapter ma;
iadapterstream is{ ma };
json::value j = json::parse(is); // 读取用户输入,并反序列化
详细内容请参考 configor_stream.hpp