如何为rapidjson反序列化编写嵌套处理程序?

时间:2015-03-22 07:16:16

标签: c++ json rapidjson

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

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

我看到它的方式,我可以

  1. 有一个中央处理程序,用于跟踪要创建的各种域对象以及后续的解析值,或
  2. 我可以在解析时更改处理程序
  3. 从技术上讲,我知道怎么做1.但是2.如果可能的话,2。似乎是一个更简洁的解决方案。

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

    谢谢!

1 个答案:

答案 0 :(得分:2)

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

  1. 在自定义处理程序内部应用State Pattern。这样处理程序可以通过多态(a.k.a.虚函数)将事件委托给当前状态对象。

  2. 使用switch-case使用enum进行授权。

  3. 如果你需要处理递归结构,第一个有优势。您可以在堆栈中推送状态对象的指针。