проверка ответа AWS json на JSONLint - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь проверить ответ json от модуля boto3 AWS на валидаторе 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, илинет?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

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

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

0 голосов
/ 20 мая 2018

Данные уже были проанализированы в словаре Python, который вы видите.Это похоже на JSON, но это не так.Для вас не существует JSON.

...