0

我将 JSON 用于我的引擎的“场景”文件;它看起来像这样:

{
"thorium": {
"name" : "JustAnotherMap",
"desc" : "A Map file",

"actor": {
"type" : "Volume",
"name" : "m_pActor1",
"rotation" : "0.0 0.0 0.0",
"position" : "0.0 0.0 0.0"
}   
}
}

因此,我希望能够阅读此内容,例如,创建名称为 m_pActor1 等的对象 VolumeActor。这是一个正则表达式工作吗?我看到了很多相互矛盾的信息,所以我不太确定如何处理这个问题。

4

1 回答 1

1

JSON 语法包含平衡的花括号,这使它成为一种上下文无关的语言。正则表达式是一种用于解析被称为正则语言的简单语言的工具。请参阅乔姆斯基层次结构

也就是说,当今使用的大多数正则表达式引擎都包含扩展,使它们更强大,并允许它们解析非严格正则的语言。这包括解析平衡的花括号。

然而,完成这项工作的正则表达式会很丑陋,最终可能会依赖于不可移植的特性,并且面对 JSON 数据结构的变化,维护起来将是一场噩梦。

您应该使用适当的 JSON 解析器,例如来自 Boost 的解析器。

于 2013-06-16T10:13:01.673 回答