![](/img/trans.png)
[英]how to convert string json inside a valid json into valid json python
[英]How can I convert a string response to a valid JSON?
嗨,我正在嘗試將字符串響應轉換為 python 中的對象的有效 json 列表。
value= "{ActionSuccess=True; AdditionalActionsBitMask=0},{ActionSuccess=True; AdditionalActionsBitMask=0}"
我試過json.loads
但我收到錯誤json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 3 (char 2)
我嘗試使用正則表達式進行轉換,但它只返回第一個 object。
regex = re.compile(r"\b(\w+)=([^=]*)(?=\s\w+=\s*|$)")
diction = dict(regex.findall(value))
結果是{'ActionSuccess': 'True;', 'AdditionalActionsBitMask': '0}'}
要將 Python 字符串轉換為 JSON,請使用 json。 負載()function。 load() 方法接受一個有效的 json 字符串並返回一個字典來訪問所有元素。
我會將您的字符串轉換為有效的 JSON 以下方式:
import json
import re
value= "{ActionSuccess=True; AdditionalActionsBitMask=0},{ActionSuccess=True; AdditionalActionsBitMask=0}"
valuejson = '[' + re.sub(r'\b','"',value).replace(';',',').replace('=',':') + ']'
data = json.loads(valuejson)
print(data)
output
[{'ActionSuccess': 'True', 'AdditionalActionsBitMask': '0'}, {'ActionSuccess': 'True', 'AdditionalActionsBitMask': '0'}]
我將"
放置在單詞邊界的位置(注意\b
的長度為零,因此不會刪除任何內容)然后將;
更改為,
並將=
更改為:
,最后將整個字符串包含在[
和]
中以獲取dict
的list
。請注意,這個解決方案是專門針對您顯示的示例制定的,因此請仔細測試您的其他用例。
如果您可以訪問有關給您所說響應的文檔,請查閱它以了解響應中使用的格式。 如果它不是專有的,您可以在PyPI上找到它的轉換器。
因為您輸入了錯誤的 JSON 字符串, {'ActionSuccess': 'True', 'AdditionalActionsBitMask': '0'}和{'ActionSuccess': 'True', 'AdditionalActionsBitMask': '0'}應該有他們的關鍵,試試這個:
import json
data = '{\"block1\":{\"ActionSuccess\":\"True\", \"AdditionalActionsBitMask\":\"0\"},\"block2\":{\"ActionSuccess\":\"True\", \"AdditionalActionsBitMask\":\"0\"}}'
print(json.loads(data))
output:
{'block1': {'ActionSuccess': 'True', 'AdditionalActionsBitMask': '0'}, 'block2': {'ActionSuccess': 'True', 'AdditionalActionsBitMask': '0'}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.