Проверка ответа AWS json на JSONLint

Я пытаюсь проверить ответ 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 или нет?

Данные уже были проанализированы в словаре Python. Вам не нужно иметь дело с JSON. Почему вы проверяете ответ на JSONLint?

Alex Hall 20.05.2018 20:27

@AlexHall Я новичок и хочу понять JSON, поэтому это не ответ JSON, а ответ словаря Python. Как мне поверить в ваш ответ?

BioRod 20.05.2018 21:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
180
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Данные уже были проанализированы в словаре Python, что вы и видите. Он похож на JSON, но это не так. Вам не нужно иметь дело с JSON.

Как уже упоминал Алекс, вы печатаете словарь Python, который немного отличается от JSON. Например, префикс «u» отмечает следующую строку как unicode.

Вам не нужно беспокоиться о получении недействительных ответов JSON, поскольку boto3 обычно выдает исключения в случае ошибок API AWS.

Другие вопросы по теме