如何为 rapidjson 反序列化编写嵌套处理程序?
How to write a nested handler for rapidjson deserialization?
我想使用 rapidjson 编写一个嵌套处理程序来消耗 json。
我已经按照 the official simplereader example 的方式为我的基本处理程序建模。这对于平面结构很好,但现在我还需要将解析扩展到嵌套对象。
依我看,我可以
- 有一个中央处理程序来跟踪要创建的各种域对象并将值解析到其中,或者
- 我可以在解析时更改处理程序
从技术上讲,我知道如何执行 1.,但如果可能的话,2. 似乎是一个更简洁的解决方案。
是否可以中途更改处理程序?有这样做的最佳实践吗?
谢谢!
您可以将事件委托给其他处理程序。这通常由以下人员完成:
在您的自定义处理程序内部应用 State Pattern。以便处理程序可以通过多态性(a.k.a. 虚函数)将事件委托给当前状态对象。
使用 switch-case
与 enum
进行委托。
如果你需要处理递归结构,第一个更有优势。您可以将状态对象的指针压入堆栈。
我想使用 rapidjson 编写一个嵌套处理程序来消耗 json。
我已经按照 the official simplereader example 的方式为我的基本处理程序建模。这对于平面结构很好,但现在我还需要将解析扩展到嵌套对象。
依我看,我可以
- 有一个中央处理程序来跟踪要创建的各种域对象并将值解析到其中,或者
- 我可以在解析时更改处理程序
从技术上讲,我知道如何执行 1.,但如果可能的话,2. 似乎是一个更简洁的解决方案。
是否可以中途更改处理程序?有这样做的最佳实践吗?
谢谢!
您可以将事件委托给其他处理程序。这通常由以下人员完成:
在您的自定义处理程序内部应用 State Pattern。以便处理程序可以通过多态性(a.k.a. 虚函数)将事件委托给当前状态对象。
使用
switch-case
与enum
进行委托。
如果你需要处理递归结构,第一个更有优势。您可以将状态对象的指针压入堆栈。