当字段名称中有引号时,Kissmetrics导出显然会生成无效的json,例如,以下是生成的事件之一:
{
"ab test group native dialogs on mobile":"Control",
"ab test group "interested" button copy":"Interested",
"_t":1412633724,
"_p":"hk5yxuxcqe/935mkbj+pz8xi0a8="
}
(添加Newlines以澄清问题,我们无法使用它们来修复JSON)。
我正在寻找一种修复这种破JSON的机制。
我相信我们可以利用这些假设:
答案 0 :(得分:0)
我正在使用的解决方案,在python中,我确信它是不完美的:
match = regex.match(r'^{("(?P<fieldName>([^:]*))":(?P<fieldValue>([0-9]*\.?[0-9]+)|("(([^"])|(\\"))*"))(,|}))*$', s)
fieldNames = match.captures('fieldName')
fieldValues = match.captures('fieldValue')
newJson = "{%s}" % (
",".join(
"\"%s\":%s" % (
fieldName.replace("\"", "\\\""),
fieldValue,
)
for fieldName, fieldValue
in zip(fieldNames, fieldValues)
)
)
这假设键中没有冒号。