首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在API中使用JSON时修复无效的源参数

如何在API中使用JSON时修复无效的源参数
EN

Stack Overflow用户
提问于 2019-06-12 04:36:02
回答 1查看 198关注 0票数 0

我正在尝试从Azure应用程序接口中提取财务数据,以对其进行组织,然后将其注入polygon.io数据库中。为了实现这一点,我一直在使用"petl“python包,但我从一个示例表开始就遇到了问题,因为我认为无效的源参数是由我检索和编写JSON结果的方式引起的。

代码语言:javascript
复制
import petl as etl
import websocket
import json
import requests

r =requests.get("https://api.polygon.io/v1/historic/forex/AUD/USD/2018-2-2?limit=1&apiKey=*********") 
#gets data includes plenty of responses that arnt text
data = json.loads(r.text)

table1 = etl.fromjson(data, header=['day','map','msLatency','pair','status','ticks','type'])
print(table1)

我原以为是一个列标题列在其值下面的表,但收到的却是这个错误消息:"AssertionError: invalid source argument, expected None or a string or an object implementing open()"

当从API打印数据时,它看起来像这样:

代码语言:javascript
复制
{'day': '2018-2-2', 'map': {'a': 'ask', 'b': 'bid', 't': 'timestamp'}, 'msLatency': 1, 'pair': 'AUD/USD', 'status': 'success', 'ticks': [{'b': 0.80392, 'a': 0.80392, 'x': 0, 't': 1517529600225}], 'type': 'forex'}

我尝试过转换数据或使用api调用行作为数据参数,但收效甚微

EN

回答 1

Stack Overflow用户

发布于 2019-06-18 23:10:57

petl.fromjson调用需要一个字符串(本地文件的路径)或None (标准输入)。您已经从URL中提取了JSON (文本),并将其转换为Python字典。所以你应该从字典的角度来思考,而不是源代码的JSON格式。我可以看到几种可能的解决方案:

  • 不要运行json.load,只需将响应写入一个临时文件,然后对该文件调用petl.fromjson
  • 不要使用petl.fromjson,因为您的数据不再是JSON,请使用petl.fromdicts,它可以从字典中加载。(实际上,在代码内部,petl.fromjson实质上是调用json.load,然后调用petl.fromdicts.
  • If如果您处理大量数据,那么您可能希望将请求包装在一个io Helper中,以便它在读取并传递给进一步的PETL函数时从petl.fromjson中提取。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56551341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档