【发布时间】:2018-10-15 10:41:37
【问题描述】:
我从 DynamoDB 中读取了一个表,并将其作为 JSON 对象发送到 API。我想将 JSON 键名 (reg,dreg,stat,num) 更改为 (a,b,c,d)
import boto3
import json
import re
def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb', region_name='xx-xxxxxxx-1')
table = dynamodb.Table('_master')
response = table.scan()
data =[sanitize(item) for item in response['Items']]
while 'LastEvaluatedKey' in response:
response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
data.extend(sanitize(item) for item in response['Items'])
return {
'statusCode': 200,
'headers': {
'Access-Control-Allow-Origin' : '*',
},
'body': json.dumps(data)
}
def sanitize(item):
item['dreg'] = item['dreg'].rstrip('\r\n')
return item
JSON 对象是:
[{"reg": "29-Oct-18", "dreg": "31-Dec-99", "stat": "R", "num": "xob13020"}, {"reg": "29-Oct-18", "dreg": "31-Dec-99", "stat": "R", "num": "oxb03873"}]
我想将 JSON 键名 (reg,dreg,stat,num) 更改为 (a,b,c,d)
【问题讨论】:
-
到目前为止你尝试过什么?有什么问题?
-
您不能直接更改 dict 中键的名称,但您可以:1/ 使用正确的键名创建对象的副本或 2/ 将新键附加到 dict 并删除旧的一个
-
试过 json.replace - 得到这个错误:AttributeError: 'list' object has no attribute 'replace'
-
@KlausD。我无法弄清楚这一点。你能帮忙吗