首页 > 解决方案 > 在 JSONLint 上验证 AWS json 响应

问题描述

我正在尝试在 JSONlint 验证器上验证 AWS 的 boto3 模块的 json 响应,但出现错误。

这是我运行的代码:

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 响应,或者不是?

标签: pythonjsonamazon-web-servicesboto3

解决方案


正如 Alex 已经提到的,您正在打印一个 Python 字典,它与 JSON 略有不同。例如,“u”前缀将以下字符串标记为 unicode。

您不必担心收到无效的 JSON 响应,因为 boto3 通常会在出现 AWS API 错误时引发异常。


推荐阅读