我正在使用 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 格式進行進一步的資料提取。在此鏈接之后,我使用 json.loads() 將其從字串轉換為 json:
json_obj = json.loads(str_obj)
但是我收到錯誤:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我檢查了這個鏈接,但它與我的問題并沒有真正的關系。
我不能簡單地從 str_obj 中洗掉“”,因為這是我從 DevOps 管道發送給我的環境變數中接收到的值。
我想知道根本原因問題是什么以及如何解決它。
uj5u.com熱心網友回復:
如果你想用這個字串制作 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)
uj5u.com熱心網友回復:
那不是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')]
uj5u.com熱心網友回復:
您的值str_obj根本不是有效的 json 格式。您可以在線使用 JSON 決議器來驗證您需要轉換為有效 JSON 的語法:在線 JSON 決議器
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/481931.html
