如何在python中将以下奇数字符串转换为json?

时间:2014-07-10 15:08:08

标签: python json types

如何在python中将此字符串转换为json?

>>> data = '[for: css=a[title="See LLCAutoSept files"]]'
>>> json.dumps(data)
'"[for: css=a[title=\\"See LLCAutoSept files\\"]]"'

我尝试过使用json.dumps(),但输出json无法在jsonlint.com上验证

3 个答案:

答案 0 :(得分:5)

您正在查看Python字符串表示。它是有效的Python代码,包含有效的JSON。

打印值:

>>> imp
>>> data = '[for: css=a[title="See LLCAutoSept files"]]'
>>> print json.dumps(data)
"[for: css=a[title=\"See LLCAutoSept files\"]]"

JSONlint正在使用stricter RFC 4627,它要求顶级是一个数组或对象,因此它不会验证JSON字符串。

然而,Python的json.dumps()生成有效的RFC 7159输出。

如果您的应用程序需要符合JSONlint,那么请务必添加列表或字典:

>>> print json.dumps([data])
["[for: css=a[title=\"See LLCAutoSept files\"]]"]
>>> print json.dumps({'data': data})
{"data": "[for: css=a[title=\"See LLCAutoSept files\"]]"}

JSONlint.com将其中任何一个验证为有效。

有一段时间,对此有一些混淆,RFC 4627,ECMA-262和ECMA-404以及实际实施不同意所允许的内容;至少RFC 7159现在同意ECMA-404。另请参阅What is the minimum valid JSON?

答案 1 :(得分:1)

这是无效的json,因为它没有数组的键以及打开和关闭花括号或方括号,这就是为什么你无法在jsonlint.com上验证它

答案 2 :(得分:1)

这对我有用

data = {'string':'[for: css=a[title="See LLCAutoSept files"]]'}
print(json.dumps(data))