【发布时间】:2016-04-18 07:16:22
【问题描述】:
我有一个列出请求事件属性的字符串。
我的字符串看起来像:
requestBody: {
propertyA = 1
propertyB = 2
propertyC = {
propertyC1 = 1
propertyC2 = 2
}
propertyD = [
{ propertyD1 = { propertyD11 = 1}},
{ propertyD1 = [ {propertyD21 = 1, propertyD22 = 2},
{propertyD21 = 3, propertyD22 = 4}]}
]
}
我尝试将"=" 替换为":",以便将其放入python 中的JSON 阅读器中,但JSON 还要求将键和值存储在带有双引号和"," 的字符串中分开每个 KV 对。然后这变得有点复杂。有什么更好的方法可以将其解析为具有完全相同结构的 python 字典(例如,还保留嵌入式字典)?
问题: 如果我要编写一个完整的解析器,我应该解决的主要模式是什么?将括号存储在堆栈中直到括号完成?
【问题讨论】:
-
它似乎是一致定义的。从头开始编写一个完整的解析器?
-
我理解将
{}中的多个属性定义为某种嵌套对象(例如propertyC),并且我理解[]中的多个对象作为对象数组(如propertyD2)。但是,当您在 [] 中具有多个属性时(如propertyD),您的意图是什么?这真的应该是 {} 中的一个对象,具有propertyD1和propertyD2属性吗? -
此外,有时列表元素似乎是逗号分隔的,有时是换行符分隔的。比如
propertyA的定义后面应该有逗号吗? -
@PaulMcGuire 我稍微修改了我的字符串格式。对于您的第一个问题,对象总是用 {} 括起来,数组应该只包含用 {} 括起来的对象。对于您的第二个问题,是的,对象中逗号分隔和换行符分隔的记录不一致(但是,数组始终以逗号分隔)。
-
生成这些字符串的软件是什么?可能已经有一个 Python 模块可以使用它。