Skip to content

Advanced (zh)

haibo2.liu edited this page Sep 29, 2022 · 2 revisions

非标准IO流支持

若你需要将 JSON 解析和序列化应用到非 std::basic_stream 流中,可以通过实现自定义 oadapteriadapter 的方式。

一个 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

Overview

  • Quick start ( en | zh )
  • Examples ( en | zh )

Features

  • Value operation ( en | zh )
  • Serialization ( en | zh )
  • Custom conversion ( en | zh )
  • Encoding support ( en | zh )

Other

  • Q&A ( en | zh )
  • Advanced ( en | zh )
Clone this wiki locally