是否可以在不使用递归的情况下编写JSON解析器?如果是,你会建议采用什么方法?
答案 0 :(得分:4)
可以使用等效的迭代实现重现任何递归代码。
这个问题很好地描述了这一点:Is it possible to remove recursion from this function?
答案 1 :(得分:1)
我同意James - 理论上可以使用迭代方法实现任何递归代码。引用链接上描述的堆栈方法是有效选项。另一种方法是你可以硬编码到n
深度,然后明显的风险就是限制在这个深度。
在不了解您尝试运行JSON处理代码的环境和约束的情况下,很难说哪种方法最适合。有些事情需要考虑:
n
- 深度场景n
- 深度场景,但可能不像其他程序员那样直观此外,可以线性化树结构(JSON的对象图是隐式的,假设仅数组可以具有“数组”的虚拟根)。这允许平流处理方法。如果您更进一步注入人工标记,例如DOWN
和UP
,它可以非常清晰。这是编译器设计和语言分析中出现的问题,但在这里可能有用。