c++ - 如何编写用于rapidjson反序列化的嵌套处理程序?

标签 c++ json rapidjson

我想编写一个嵌套处理程序来使用rapidjson 来消耗json。

我已经按照 the official simplereader example 的方式对我的基本处理程序进行了建模。这对于平面结构来说很好,但现在我还需要将解析扩展到嵌套对象。

在我看来,我可以

  1. 有一个中央处理程序,用于跟踪要创建的各种域对象以及随后解析的值,或者
  2. 我可以在解析时更改处理程序

从技术上讲,我知道如何执行 1.,但如果可能的话,2. 似乎是一个更简洁的解决方案。

是否可以在中途更改处理程序?有这样做的最佳实践吗?

谢谢!

最佳答案

您可以将事件委托(delegate)给其他处理程序。这通常是通过以下方式完成的:

  1. 应用 State Pattern在您的自定义处理程序内部。这样处理程序就可以通过多态性(也称为虚拟函数)将事件委托(delegate)给当前状态对象。

  2. 使用switch-case通过enum进行委托(delegate)。

如果您需要处理递归结构,第一个具有优势。您可以将状态对象的指针压入堆栈。

关于c++ - 如何编写用于rapidjson反序列化的嵌套处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29191921/

相关文章:

json - golang json编码返回{}为空 map

c++ - 使用 rapidjson 读取嵌套的 Json

c++ - 更快的 JsonCpp 替代方案允许 Json 对象的复制/可变性?

c++ - C++中如何判断一个整数类型是否是内置类型?

Android:Vulkan 层已停止在设备上运行

javascript - 从 JSON 解析数组,其中每个字段键都是一个数字

json - 在PIG的JsonLoader中定义架构

c++ - 用 rapidjson "SAX"方式写嵌套数组

c++ - 在函数原型(prototype)中为参数赋值意味着什么?

c++ - 返回 *this,尝试级联,并且不返回引用