python,无法将字符串转换为 json
python, cannot convert string to json
我正在使用 python 3.10.4。我有一个字符串如下:
str_obj = "[(190229461780583, 'main'), (302030571463836, 'feature/BRANCH_livestream'), (1071064128966159, 'feature/BRANCH_sensitive'), (1137211553786277, 'main'), (1283366887974580, 'feature/add_sql_vm'), (1492751472739439, 'feature/BRANCH-2977'), (2662272892040840, 'main'), (4078787696930326, 'main')]"
我需要将其转换为 json 对象。我需要 json 格式的它以进一步提取数据。在 this link 之后,我使用 json.loads() 将其从字符串转换为 json:
json_obj = json.loads(str_obj)
但是我得到了错误:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我检查了 this link 但它与我的问题并没有真正的关系。
我不能简单地从 str_obj 中删除“”,因为这是我从 DevOps 管道发送给我的环境变量中收到的值。
我想知道问题的根本原因是什么以及如何解决它。
那不是json,json使用键值对。你想要 ast.literal_eval
吗?
import ast
ast.literal_eval(str_obj)
# [(190229461780583, 'main'), (302030571463836, 'feature/BRANCH_livestream'), (1071064128966159, 'feature/BRANCH_sensitive'), (1137211553786277, 'main'), (1283366887974580, 'feature/add_sql_vm'), (1492751472739439, 'feature/BRANCH-2977'), (2662272892040840, 'main'), (4078787696930326, 'main')]
您 str_obj
的值根本不是有效的 json 格式。您可以在线使用 JSON 解析器来验证您需要转换为有效 JSON 的语法:Online JSON parser
如果您想从该字符串中提取 json,类似的内容可能会对您有所帮助。
当然最好的选择是修复输入数据
str_obj = "[(190229461780583, 'main'), (302030571463836, 'feature/BRANCH_livestream'), (1071064128966159, 'feature/BRANCH_sensitive'), (1137211553786277, 'main'), (1283366887974580, 'feature/add_sql_vm'), (1492751472739439, 'feature/BRANCH-2977'), (2662272892040840, 'main'), (4078787696930326, 'main')]"
# clear the input string
str_obj = str_obj.replace('[','').replace(']','').replace('(','').replace(')','').replace('\'','').replace(' ','').split(',')
# create output string
output = {}
# Create pairs of key:value
str_to_list = [str_obj[i:i+2] for i in range(0, len(str_obj), 2)]
# append to output dict
for e in str_to_list:
output[e[0]] = e[1]
# You can easly create json form dict
json_object = json.dumps(output)
我正在使用 python 3.10.4。我有一个字符串如下:
str_obj = "[(190229461780583, 'main'), (302030571463836, 'feature/BRANCH_livestream'), (1071064128966159, 'feature/BRANCH_sensitive'), (1137211553786277, 'main'), (1283366887974580, 'feature/add_sql_vm'), (1492751472739439, 'feature/BRANCH-2977'), (2662272892040840, 'main'), (4078787696930326, 'main')]"
我需要将其转换为 json 对象。我需要 json 格式的它以进一步提取数据。在 this link 之后,我使用 json.loads() 将其从字符串转换为 json:
json_obj = json.loads(str_obj)
但是我得到了错误:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我检查了 this link 但它与我的问题并没有真正的关系。
我不能简单地从 str_obj 中删除“”,因为这是我从 DevOps 管道发送给我的环境变量中收到的值。
我想知道问题的根本原因是什么以及如何解决它。
那不是json,json使用键值对。你想要 ast.literal_eval
吗?
import ast
ast.literal_eval(str_obj)
# [(190229461780583, 'main'), (302030571463836, 'feature/BRANCH_livestream'), (1071064128966159, 'feature/BRANCH_sensitive'), (1137211553786277, 'main'), (1283366887974580, 'feature/add_sql_vm'), (1492751472739439, 'feature/BRANCH-2977'), (2662272892040840, 'main'), (4078787696930326, 'main')]
您 str_obj
的值根本不是有效的 json 格式。您可以在线使用 JSON 解析器来验证您需要转换为有效 JSON 的语法:Online JSON parser
如果您想从该字符串中提取 json,类似的内容可能会对您有所帮助。 当然最好的选择是修复输入数据
str_obj = "[(190229461780583, 'main'), (302030571463836, 'feature/BRANCH_livestream'), (1071064128966159, 'feature/BRANCH_sensitive'), (1137211553786277, 'main'), (1283366887974580, 'feature/add_sql_vm'), (1492751472739439, 'feature/BRANCH-2977'), (2662272892040840, 'main'), (4078787696930326, 'main')]"
# clear the input string
str_obj = str_obj.replace('[','').replace(']','').replace('(','').replace(')','').replace('\'','').replace(' ','').split(',')
# create output string
output = {}
# Create pairs of key:value
str_to_list = [str_obj[i:i+2] for i in range(0, len(str_obj), 2)]
# append to output dict
for e in str_to_list:
output[e[0]] = e[1]
# You can easly create json form dict
json_object = json.dumps(output)