1

我已经在网上搜索过,但找不到合适的答案,所以我会在这里尝试询问。

我正在试验火花核心并通过 JSON 解析数据。我已经设法读取数据并使用以下代码打印它:

import urllib, json
from pprint import pprint

url = "https://api.spark.io/v1/devices/mycore/result?access_token=accesstoken"
response = urllib.urlopen(url);
data = json.loads(response.read())
pprint(data)

现在我正在尝试使用以下代码打印我发送的值:

data["result"]["data1"]

我在另一个主题中找到了上述内容,但我可能没有经验将其正确应用于我自己的代码。

这是 python 打印的内容:

{u'cmd': u'VarReturn',
 u'coreInfo': {u'connected': True,
           u'deviceID': u'1111111111111111111',
           u'last_app': u'',
           u'last_handshake_at': u'2015-03-09T12:28:20.271Z',
           u'last_heard': u'2015-03-09T12:56:42.780Z'},
 u'name': u'result',
 u'result': u'{"data1":2869}'}

我得到的错误如下:TypeError:字符串索引必须是整数

我使用了本主题的示例代码:

https://community.spark.io/t/example-logging-and-graphing-data-from-your-spark-core-using-google/2929

我希望我清楚,有人可以启发我吗?

4

2 回答 2

0

尝试打印出来data["result"]。从您提供的 python print 中,输出应该是'{"data1":2869}',这是另一个 json 对象。

尝试这样的事情:

import urllib, json
from pprint import pprint

url = "https://api.spark.io/v1/devices/mycore/result?access_token=accesstoken"
response = urllib.urlopen(url);
data = json.loads(response.read())
pprint(data)

new_data = json.loads(data["result"])
print new_data["data1"]
于 2015-03-09T14:23:19.317 回答
0

data["result"] 的内容是一个 unicode 字符串。该字符串包含一些看起来像 JSON doc / Python 字典的内容(请参阅整个结构周围的单引号):

>>> data["result"]
u'{"data1":2869}'
于 2015-03-09T14:25:30.067 回答