2017-06-15 12 views
0

json文字列とPythonで問題が発生しました。私はprosesingのビットの後、このモジュールは、出力Python json prase ValueError:JSONオブジェクトをデコードできませんでした

{u'locationType': u'', u'altitude': 0.0, u'locationFinished': True, u'longitude': 7.340714223689717, u'positionType': u'GPS', u'floorLevel': 0, u'timeStamp': 1497518502892L, u'latitude': 47.81268700030429, u'isOld': False, u'isInaccurate': False, u'verticalAccuracy': 0.0, u'horizontalAccuracy': 50.0}

で私にこの文字列を与える見つける - 私の - iphoneのPythonモジュールを使用するスクリプトを書いている:

loc = api.devices[deviceID].location() 
locstr = str(loc).replace("u'",'"').replace("'",'"') #.replace("}","") 

私は、文字列を取得しています次のようになります。 `

from pyicloud import PyiCloudService 
from geopy.distance import vincenty 
import json 
import sys 

api = PyiCloudService('*****.*****@free.fr','******') 
deviceID = u"Qo+Jyvct3IIl7N3MXrz6LfDvm8qjDCHjkedOvse1mhzWf1sikvSFQOHYVNSUzmWV"   # Needed 
deviceNAME = "<AppleDevice(iPhone 5s: David Smartphone)>"        # Just an help 

api.devices[deviceID].location() 
api.devices[deviceID].status() 

loc = api.devices[deviceID].location() 
locstr = str(loc).replace("u'",'"').replace("'",'"') #.replace("}","") 
:私のコードがある

{"locationType": "", "altitude": 0.0, "locationFinished": False, "longitude": 7.340450948111099, "positionType": "GPS", "floorLevel": 0, "timeStamp": 1497518436368L, "latitude": 47.81275740829093, "isOld": False, "isInaccurate": False, "verticalAccuracy": 0.0, "horizontalAccuracy": 100.0}

しかし、私は

json.loads(locstr)

を使用しようとすると、Pythonは私を与える:

Traceback (most recent call last): File "distancePAPA.py", line 19, in t = json.loads(locstr) File "/usr/lib/python2.7/json/init.py", line 339, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded

を私は本当に私が間違っているので、I'amが助けfoは

を求めたのかわかりませんPS1:私は本当にGPS座標が必要です PS2:私はフランス人ですので、間違って申し訳ありません。

答えて

0
import json 

>>> loc = api.devices[deviceID].location() 
>>> locstr = json.dumps(loc) 
'{"horizontalAccuracy": 50.0, "floorLevel": 0, "isOld": false, "isInaccurate": false, "verticalAccuracy": 0.0, "timeStamp": 1497518502892, "altitude": 0.0, "locationFinished": true, "longitude": 7.340714223689717, "positionType": "GPS", "locationType": "", "latitude": 47.81268700030429}' 

>>> json.loads(locstr) 
{u'timeStamp': 1497518502892, u'altitude': 0.0, u'locationFinished': True, u'longitude': 7.340714223689717, u'horizontalAccuracy': 50.0, u'floorLevel': 0, u'locationType': u'', u'latitude': 47.81268700030429, u'isOld': False, u'isInaccurate': False, u'verticalAccuracy': 0.0, u'positionType': u'GPS'} 
+0

感謝を使用することができます – TurtleForGaming

0

こんにちは、モジュールAST

import ast loc_str = ast.literal_eval(str(loc))

を使用
0

False1497518436368LでpostfixのLをサポートしていませんJSON。それは定期的にするために、私はfinnalyあなたのを使用して、我々は再び

s = locstr.replace('False', 'false').replace('L,', ',') 

を変換する必要がありそして今、我々はあなたの解決のためにjson.loads(s)

関連する問題