![](/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.