从S3 Bucket解析JSON文件

2024-09-24 02:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Amazon Web服务比较陌生

我需要关于使用Python解析S3 Bucket中的JSON文件的帮助。我能够使用连接到lambda函数的S3触发器从S3读取JSON文件,并将其显示在cloudwatch上。我需要关于如何解析JSON文件中的“结果”以及计算“结果”的最大值、最小值和平均值的帮助

这是我的JSON文件:

Student = [{"Student_ID": 1,
    "Name":"Erik",
    "ExamSubject": "English",
    "Result": 72.3,
    "ExamDate": "9/12/2020",
    "Sex": "M"},



{"Student_ID": 2,
    "Name":"Daniel",
    "ExamSubject": "English",
    "Result": 71,
    "ExamDate": "9/12/2020",
    "Sex": "M"},


{"Student_ID": 3,
    "Name":"Michael",
    "ExamSubject": "English",
    "Result": 62,
    "ExamDate": "9/12/2020",
    "Sex": "M"},


{"Student_ID": 4,
    "Name":"Sven",
    "ExamSubject": "English",
    "Result": 73,
    "ExamDate": "9/12/2020",
    "Sex": "M"},


{"Student_ID": 5,
    "Name":"Jake",
    "ExamSubject": "English",
    "Result": 84.15,
    "ExamDate": "9/12/2020",
    "Sex": "M"},
]


print(Student)

以下是我迄今为止在lambda函数上使用的代码:

import json
import boto3


s3 = boto3.client('s3')

def lambda_handler(event, context):

   bucket =  'finalyearpro-aws'
   key = 'StudentResults.json'


      try:
        data = s3.get_object(Bucket=bucket, Key=key)
        json_data = data['Body'].read().decode('utf-8')



    print (json_data)


except Exception as e:

    raise e

如何添加到该代码中,使其从JSON文件中读取“结果”,对其进行分析(最大值、最小值、平均值),并在Lambda控制台上显示


Tags: 文件lambdanameidjsondatas3english
2条回答

您可以使用^{}加载文档,然后使用^{}将其解析为python:

import json
import boto3

s3 = boto3.resource('s3')

def lambda_handler(event, context):
  bucket =  'finalyearpro-aws'
  key = 'StudentResults.json'

  obj = s3.Object(bucket, key)
  data = obj.get()['Body'].read().decode('utf-8')
  json_data = json.loads(data)

  print(json_data)

json.loads(json_data)将解析json字符串并从中创建DICT列表(用于此数据)。之后,您可以迭代列表并执行任何您想要的操作,即

data = json.loads(json_data)
min([r['Result'] for r in data])

相关问题 更多 >