1

ネットで調べたのですが、適切な回答が見つからなかったので、こちらで質問させていただきます。

Spark コアを試し、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"]'{"data1":2869}'あなたが提供したpython printから、出力は別の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 に答える