【发布时间】:2011-03-18 12:30:15
【问题描述】:
是否可以在不使用递归的情况下编写 JSON 解析器?如果是,你会建议什么方法?
【问题讨论】:
是否可以在不使用递归的情况下编写 JSON 解析器?如果是,你会建议什么方法?
【问题讨论】:
可以通过等效的迭代实现来重现任何递归代码。
这个问题很好地描述了这一点:Is it possible to remove recursion from this function?
【讨论】:
我同意James - 理论上任何递归代码都可以使用迭代方法来实现。参考链接上描述的堆栈方法是一个有效的选项。另一种方法是您可以硬编码到n 深度,但明显的风险是受限于所述深度。
如果不了解您尝试运行 JSON 处理代码的环境和约束的更多信息,很难说哪种方法最适合。需要考虑的一些事项:
n-depth 场景n-depth 场景,但对其他程序员来说可能不那么直观此外,可以线性化树结构(JSON 的对象图是隐式的,假设仅数组可以具有“数组”的虚拟根)。这允许平流处理方法。如果你更进一步并注入DOWN 和UP 之类的人工令牌,它可以非常清晰易读。这是编译器设计和语言分析中出现的东西,但在这里作为一个概念可能会有所帮助。
【讨论】: