python - 如何从api中提取嵌套的json
问题描述
我需要帮助从 Pipedrive API(只是一个 resquest.get)获取一些 json 数据,但是,正如预期的那样,json 文件根本没有格式化。正如您在下面的 Python 脚本中看到的那样,我会将该文件上传到我的 S3 存储桶,这样我就可以在 AWS Glue 中创建表。使这个 json 文件在 AWS 结构中“可读”时遇到了很多麻烦。
- 我正在工作的 json 文件示例:[我需要“交易”部分]
{"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}]}]}
- Python脚本:
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') ```
解决方案
推荐阅读
- ruby - TeamCity Rake 任务执行黄瓜测试:忽略
因为它的扩展没有构建 - kubernetes - 将 K8s PVC 挂载到隐藏的容器目录
- uwp - System.InvalidCastException:“无法将“ApplicationView”类型的对象转换为“IApplicationView9”类型
- react-native - react-native 键盘自动隐藏问题
- python - Scrapy 和 MySql:存储列表
- javascript - Firebase 存储验证图像是否存在并使用新名称上传
- sql - 如何在 SQL 中忽略运行总计/累计和中的 0?
- android - Google 地方信息自动填充功能需要花钱吗?
- azure - Azure Speech to text 结果未定义 nodejs
- javascript - 状态 JSX 组件未更新