簡體   English   中英

如何將字符串響應轉換為有效的 JSON?

[英]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的長度為零,因此不會刪除任何內容)然后將;更改為,並將=更改為: ,最后將整個字符串包含在[]中以獲取dictlist 。請注意,這個解決方案是專門針對您顯示的示例制定的,因此請仔細測試您的其他用例。

如果您可以訪問有關給您所說響應的文檔,請查閱它以了解響應中使用的格式。 如果它不是專有的,您可以在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM