将类似dict的字符串转换为JSON

时间:2019-07-12 13:49:46

标签: python json python-3.x quotes double-quotes

为了在python3中使用json.loads()函数,我需要将带有单引号的json行的文件转换为双引号。

我遇到的问题是:如果我将这些行视为字符串并使用.replace("'", '"')函数,那么现在我刚刚引入的双引号将被视为该字符串的终止符。

我正在尝试转换:

{'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}

进入:

{"Timestamp": "2016-02-19 09:29", "Server Type": "HTTP", "Client IP": "10.12.2.83", "Source Program": "SQLI"}

是否可以将json.loads()函数与单引号的json一起使用,还是有人知道有一个聪明的解决方法?

2 个答案:

答案 0 :(得分:2)

也许json.dumps(your_string)对您有用。  我运行了以下代码:

import json

txt_json = {'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}
print(json.dumps(txt_json))

输出为:

{"Timestamp": "2016-02-19 09:29", "Server Type": "HTTP", "Client IP": "10.12.2.83", "Source Program": "SQLI"}

答案 1 :(得分:2)

您不能为此使用json。 Json需要双引号。如果您已经创建了字典并需要将其转换为JSON,则u / Gabriel Ataide的答案将起作用。

如果正在从这样的文件中读取它,或者将其作为字符串"{'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}"使用,并且想要从中创建字典,则必须像下面这样首先使用ast :

>>> import ast
>>> import json
>>> txt_json = "{'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}"
>>> data = ast.literal_eval(txt_json)
>>> print(data)
{'Timestamp': '2016-02-19 09:29', 'Server Type': 'HTTP', 'Client IP': '10.12.2.83', 'Source Program': 'SQLI'}
>>> print(json.dumps(data))
{"Timestamp": "2016-02-19 09:29", "Server Type": "HTTP", "Client IP": "10.12.2.83", "Source Program": "SQLI"}