首页 > 解决方案 > 如何从api中提取嵌套的json

问题描述

我需要帮助从 Pipedrive API(只是一个 resquest.get)获取一些 json 数据,但是,正如预期的那样,json 文件根本没有格式化。正如您在下面的 Python 脚本中看到的那样,我会将该文件上传到我的 S3 存储桶,这样我就可以在 AWS Glue 中创建表。使这个 json 文件在 AWS 结构中“可读”时遇到了很多麻烦。

{"success":true,"data":[{"period_start":"2020-11-12 00:00:00","period_end":"2020-11-12 23:59:59","deals":[{"id":xx,"creator_user_id":xx,"user_id":XX,"person_id":XX,"org_id":XX,"stage_id":X}]}]}

from datetime import datetime
import boto3
import requests
from jsonpath_ng import parse
import pandas as pd

now = datetime.now()
day_int = now.strftime("%d")
month_int = now.strftime("%m")
year_int = now.strftime("%Y")
yesterday = (int(day_int) - 1)
if yesterday == 0:
    yesterday = 31
#today = now.strftime("%Y" + "-" + "%m" + "-" + str(yesterday))
today = '2020-11-12'

response_01 = requests.get(
    'https://api.pipedrive.com/v1/deals/timeline?start_date=' + str(today) + '&interval=day&amount=' + str(
        days) + '&field_key=update_time&totals_convert_currency=' + currency + '&api_token=' + token_api)
raw_data = response_01.json()
x = ([match.value for match in parse('$..deals.[*].[*]').find(raw_data)])
y = json.dumps(x, default= str)

s3 = boto3.resource(
    's3',
    region_name=data_region,
    aws_access_key_id=key_id,
    aws_secret_access_key=access_key
)
client = boto3.client('s3')
client.put_object(Body=str(raw_data), Bucket='bucket_key', Key='object_key') ```

标签: pythonjsonamazon-web-servicesamazon-s3

解决方案


推荐阅读