Я пытаюсь проверить ответ json от модуля AWS boto3 на валидаторе JSONlint и получаю сообщение об ошибке.
Вот код, который я запустил:
import boto3
import json
ec2 = boto3.resource('ec2')
for status in ec2.meta.client.describe_instance_status()['InstanceStatuses']:
print(status)
Вот ответ:
{u'InstanceId': 'i-xxxxxxxx', u'InstanceState': {u'Code': 16, u'Name': 'running'}, u'AvailabilityZone': 'us-xxx-west-1b', u'SystemStatus': {u'Status': 'ok', u'Details': [{u'Status': 'passed', u'Name': 'reachability'}]}, u'InstanceStatus': {u'Status': 'ok', u'Details': [{u'Status': 'passed', u'Name': 'reachability'}]}}
Когда я вставляю этот ответ в JSONLint, вот ответ:
Error: Parse error on line 1:
{ u 'InstanceId': 'i-0
----^
Expecting 'STRING', '}', got 'undefined'
Я предполагаю, что AWS возвращает правильно отформатированный ответ JSON или нет?
@AlexHall Я новичок и хочу понять JSON, поэтому это не ответ JSON, а ответ словаря Python. Как мне поверить в ваш ответ?






Данные уже были проанализированы в словаре Python, что вы и видите. Он похож на JSON, но это не так. Вам не нужно иметь дело с JSON.
Как уже упоминал Алекс, вы печатаете словарь Python, который немного отличается от JSON. Например, префикс «u» отмечает следующую строку как unicode.
Вам не нужно беспокоиться о получении недействительных ответов JSON, поскольку boto3 обычно выдает исключения в случае ошибок API AWS.
Данные уже были проанализированы в словаре Python. Вам не нужно иметь дело с JSON. Почему вы проверяете ответ на JSONLint?