python - 在 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 响应,或者不是?
解决方案
正如 Alex 已经提到的,您正在打印一个 Python 字典,它与 JSON 略有不同。例如,“u”前缀将以下字符串标记为 unicode。
您不必担心收到无效的 JSON 响应,因为 boto3 通常会在出现 AWS API 错误时引发异常。
推荐阅读
- postgresql - 如何连接到 pgbouncer 内部数据库
- sql - 在 SQL 中,如果可以使用 NOT NULL 和 UNIQUE 约束代替主键,为什么还需要主键?
- c++ - How to re-initialize a vector in a while-loop?
- bash - 先重定向到文件 STDOUT,然后再重定向到 STDERR
- python - modify/access python instance from external script or command
- android - 如何在一个活动中使用两次 onActivityResult
- react-native - Play video when in viewport in React-Native using Skele Components
- python - 如何抓取嵌入的链接和表格信息
- python - 如何将多个 Python 脚本合并为一个脚本?
- ios - UITableView Cell should not scroll horizontally swift iOS