следующий действительный JSON? как я могу преобразовать его в dict в Python - PullRequest
0 голосов
/ 05 июля 2018

Допустим ли следующий JSON:

 "AGENT ": {
    "pending": [],
    "active": null,
    "completed": [{}]
 },
 "MONITORING": {
    "pending": [],
    "active": null,
    "completed": [{}]
 }

сайты проверки json (https://jsonlint.com/) говорит, что это не так. Как я могу сделать это действительным json? Преобразовать его в dict в python-усеченных блоках json (часть "AGENT"). Как можно Я преобразовываю этот блок в dict в Python без потери блоков JSON? Это JSON, возвращенный из запроса GET. Использование следующего не работает

response = requests.get(<url>)
data = response.content
json_data = json.dumps(data)
item_dict = json.loads(data)
item_dict = data

1 Ответ

0 голосов
/ 05 июля 2018

Вам просто нужно сделать его одним объектом JSON, добавив фигурные скобки:

{
 "AGENT ": {
    "pending": [],
    "active": null,
    "completed": [{}]
 },
 "MONITORING": {
    "pending": [],
    "active": null,
    "completed": [{}]
 }
}

Теперь действует:

In [27]: json.loads('''{
   ....:  "AGENT ": {
   ....:     "pending": [],
   ....:     "active": null,
   ....:     "completed": [{}]
   ....:  },
   ....:  "MONITORING": {
   ....:     "pending": [],
   ....:     "active": null,
   ....:     "completed": [{}]
   ....:  }
   ....: }''')
Out[27]: 
{u'AGENT ': {u'active': None, u'completed': [{}], u'pending': []},
 u'MONITORING': {u'active': None, u'completed': [{}], u'pending': []}}

Говоря о разборе http-ответа, вы можете упростить задачу:

item_dict = requests.get(<url>).json()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...