c++读取JSON场景文件

标签 c++ regex json

我将 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 等。这是一个正则表达式作业吗?我看到了很多相互矛盾的信息,所以我不太确定如何处理这个问题。

最佳答案

JSON 语法包含平衡的大括号,这使它成为 context-free language .正则表达式是一种用于解析称为 regular languages 的更简单语言的工具。 .参见 Chomsky hierarchy .

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

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

您应该使用合适的 JSON 解析器,例如the one from Boost .

关于c++读取JSON场景文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131800/

相关文章:

php - 我如何将 json 中的阿拉伯字符从 android 发送到 PHP

ruby - 如何使用 JSON 进行 Ruby 对象序列化

c++ - 所有可能的位排列

c++ - g++编译器运行错误 “g++: error: spawn: Exec format error”

正则表达式使用 grep 匹配尽可能少的次数(惰性)

regex - AWS Cognito 密码正则表达式 - 特定于 AWS Cognito

c++ - 禁止复制构造函数和赋值运算符单例类

c++ - 为什么 T& 类型的模板函数参数可以绑定(bind)到 const 左值而不是右值?

javascript - 匹配 <pre> 内的 <pre> 和 </pre>

json - 了解 REST 响应和 HTTP 状态码