【发布时间】:2026-01-12 13:25:01
【问题描述】:
我有一堆自定义脚本,它们的文件格式与 JSON 相似,但又不一样。我想获取这些文件并将它们的数据吐入 QTreeWidget 并显示带有一些语法突出显示的原始代码。我不需要完成这些任务,我只需要一种干净的方式或想法来了解如何从这些任务中提取信息。这是脚本中的示例 sn-p。
例子:
"People"
{
"Person 1"
{
"age" "34"
"name" "John"
"gender" "male"
"skills"
{
"skill 1" "Intelligent"
"skill 2" "Wise"
"skill 3" "Buff as a bear!"
}
}
"Person 2"
{
"age" "25"
"name" "Jamie"
"gender" "helicopter"
}
}
【问题讨论】:
-
也许您需要一个“前瞻变量”?它将在您处理当前令牌时读取下一个令牌,因此您可以确定当前令牌是其父级的字段还是嵌套结构的名称。
-
这种格式似乎是上下文无关的语法;你需要一个堆栈来解析它。您也许可以调整现有的 JSON 库以读取格式。
-
@MrEricSir 我的意思是我所要做的就是添加冒号、逗号和几个括号,然后它就是 JSON。正则表达式的痛苦
-
@NicholasJohnson 在这种情况下忘记使用正则表达式,因为您没有处理正则语法。对于 Stack Overflow 评论来说太复杂了,但 Chomsky hierarchy 解释了区别。
-
最简单的解决方案 - 非常简单,因为更改只有几行 - 是复制 Qt 的 Json 实现并对其进行调整以处理您的语法。你得到了 Qt 的资源。使用它们!