- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个实现问题...
#!/usr/bin/python
#This is the API for BTC price request.
# Average all the amounts, and push that to the program
import json
import urllib.request
from jsonpath_rw import parse as parse_jsonpath
class BtcAPI:
def __init__(self, url, api_id, json_key):
self.url = url
self.api_id = api_id
self.json_key = json_key
def btc_api_call(self):
hdr = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' }
req = urllib.request.Request(self.url, headers=hdr)
readdata = urllib.request.urlopen(req)
json_data = readdata.read()
json_dict = json.loads(json_data)
results = parse_jsonpath(self.json_key).find(json_dict)
print(results)
class Price:
def __init__(self, api_id, url, json_key):
self.api_id = api_id
self.url = url
self.json_key = json_key
def pass_for_request(self):
get_price = BtcAPI(self.url, self.api_id, self.json_key)
get_price.btc_api_call()
def Coindesk():
coindesk = Price("coindesk","https://api.coindesk.com/v1/bpi/currentprice.json","time.updated")
coindesk.pass_for_request()
为“json_key”传递的值是“bpi.USD.rate_float”...在此 url 中。它被传递给一个名为“Price”的类,该类创建传递给包含上述代码的类的变量。
coindesk = Price("coindesk","api.coindesk.com/v1/bpi/currentprice.json", "bpi.USD.rate_float")
这是我要定位的 json...试图获取 rate_float 键:
{
"time": {
"updated": "Feb 5, 2018 18:34:00 UTC",
"updatedISO": "2018-02-05T18:34:00+00:00",
"updateduk": "Feb 5, 2018 at 18:34 GMT"
},
"disclaimer": "This data was produced from the CoinDesk Bitcoin Price Index (USD). Non-USD currency data converted using hourly conversion rate from openexchangerates.org",
"chartName": "Bitcoin",
"bpi": {
"USD": {
"code": "USD",
"symbol": "$",
"rate": "7,004.9588",
"description": "United States Dollar",
"rate_float": 7004.9588
}
}
当我运行该程序时,它会向我发送整个 json 文件的输出,而不是我尝试通过 jsonpath 使用“bpi.USD.rate_float”定位的特定 key 我正在使用 jsonpath_rw。
如何使用 jsonpath 有效地定位 rate_float 键?
最佳答案
问题是您可能认为 results
包含来自 Python dict
的纯字符串值。
这实际上不是 jsonpath_rw
返回的内容。如果您查看 https://github.com/kennknowles/python-jsonpath-rw 中的示例你会看到它做的,例如
[match.value for match in jsonpath_expr.find({'foo': [{'baz': 1}, {'baz': 2}]})]
正如它进一步提到的那样:
The result of JsonPath.find provide detailed context and path data so it is easy to traverse to parent objects, print full paths to pieces of data, and generate automatic ids.
find
实际上返回带有上下文信息的对象列表。如果您想要的只是字符串值,并且您只希望为 JSONPath 表达式获得一个返回值,那么您需要执行如下操作:
results = parse_jsonpath(self.json_key).find(json_dict)
print(results[0].value)
关于Python,jsonpath : How do I parse with jsonpath correctly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48629461/
我正在构建一个基本的 Java 应用程序来将一些文件加载到 mysql 数据库中。我能够毫无问题地加载文件并填充我的表。然而,在与审查我的代码的人交谈后,我显然没有正确关闭我的连接并浪费资源。我在
我正在用 C++ 构建一个库(主要是为了好玩),我已经研究了一段时间(多年,哈哈,这只是一种爱好) 我最近将一些基础(阅读、库依赖)切换到了另一个库。不幸的是,该库根本不关心“const-correc
如果我绘制单个平面,则纹理坐标会正确映射。 (4 Verts, 4 TC, 6 Indices(2 polys)) 即使它被 segmentation ,(9 Verts, 9 TC, 27 Indi
我正在从文件系统上的 pfx 加载 x509 证书 new X509Certificate2(@"Resources\certificate.pfx", "Password123") 在本地,这工作正
我知道这个问题被问了一遍又一遍。我确实喜欢在与此相关的所有问题中提出建议,并且我在 this question that I put 中做了 BalusC 的操作。 告诉我,我还没有成功。 所以网络应
简而言之,我正在制作一个预订应用程序。预订 ID 需要从 10000 开始,并在每次新预订时增加 1。 我已经开始编写生成此预订编号的方法。我正在努力的是: 第一次运行时,不会有预订编号,所以我不能简
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我查看了 php.net 上的 switch 文档,据我所知,它检查了 switch 和 case 中的变量之间的相等性比较。但是,以下代码似乎适用于所有可能的值(int、null、数组、其他): $
我正在为以多种方式创建和作用于实体的服务编写 JUnit 测试。我希望我的测试能够尝试多种不同的事件组合。我有这样的东西: test1() { /** create entity **/ /** as
关于如何在 Delphi 程序中定义 ShortCut 的示例有很多,但是它们归结为两种不同的方式: 将任意 scCtrl、scShift 和 scAlt 常量添加到键的 Ord() 使用 Menus
我正在尝试学习如何在 Javascript 中创建类以及如何执行对象继承。我已经遵循了一些教程,但我不确定我的代码是否正确。 我是否正确创建了公共(public)函数和属性?如果不是,我应该改变什么?
任何写过 javascript/jquery 的人都知道,有很多不同的方法可以做同样的事情。我目前正在尝试通过表单提交和 AJAX 请求向服务器发送一些数据,我想知道执行此操作的“正确”方法是什么。
一条 200 字节的消息有一个随机字节损坏。 修复损坏字节的最有效方法是什么? A Hamming(255,247)代码有 8 个字节的开销,但实现起来很简单。 Reed-Solomon error
在C++中,将n -bit整数移位n是未定义的行为: std::uint64_t v = 1; v = v = 64 ? 0 : v > 6; uint64_t mask = (!!temp)
我对 MouseEvents 和 MouseListeners 非常陌生,最近我问了一个关于创建篮球投篮图表的问题。到目前为止我所拥有的是这个 import javax.swing.*; im
http://www.codechef.com/OCT14/problems/PRLADDU 这是当前的运行比赛。 我不想要它的答案,只是让我知道我的方法是否正确。 我遵循的方法是按交换方式添加人和恐
我正在用 Python(在 Linux 系统上的 Apache 服务器上)编写一个需要连接到 Postgres 数据库的 Web 应用程序。因此,它需要数据库服务器的有效密码。在我的 Python 文
我对 JS 和 HTML5 有点陌生。我正在创建一个简单的测验,只是为了好玩。我知道需要使每个问题都能够独立于其他问题而被标记为“正确”。我如何通过 JS,甚至 CSS/HTML5 来做到这一点?我感
我正在编写一个涉及大量 XML 操作的 HTML5 应用程序,其中部分操作涉及比较两个不同 XML 元素的版本。 我需要的是每个 Element、Attr 和 TextNode(所有这些都继承自 No
我正在使用 IBM RAD 开发一些 JPA 实体,并从中开发相应的 JPA Manager Bean。管理器 bean(由 RAD 生成)具有以下成员: @PersistenceUnit priva
我是一名优秀的程序员,十分优秀!