Python json prase ValueError:无法解码任何json对象
我在使用python的json字符串时遇到了问题。我已经编写了一个脚本,使用find my iphone python模块这个模块在输出端给我这个字符串 {u'locationType':u',u'altitude':0.0,u'locationFinished':True,u'Ladynamic':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'HorizontalAccurance':50.0} 经过一段时间的讨论后:Python json prase ValueError:无法解码任何json对象,python,json,string,python-2.7,gps,Python,Json,String,Python 2.7,Gps,我在使用python的json字符串时遇到了问题。我已经编写了一个脚本,使用find my iphone python模块这个模块在输出端给我这个字符串 {u'locationType':u',u'altitude':0.0,u'locationFinished':True,u'Ladynamic':7.340714223689717,u'positionType':u'GPS',u'floorLevel':0,u'timeStamp':1497518502892L,u'latitude':47
loc = api.devices[deviceID].location()
locstr = str(loc).replace("u'",'"').replace("'",'"') #.replace("}","")
我获得一个如下所示的字符串:
{“位置类型”:“高度”:0.0,“位置完成”:False,“经度”:7.340450948111099,“位置类型”:“GPS”,“地板标高”:0,“时间戳”:1497518436368L,“纬度”:47.81275740829093,“isOld”:False,“isInaccurate”:False,“垂直精度”:0.0,“水平精度”:100.0}
这是我的代码:
`
从pyicloud导入PyiCloudService
从geopy.distance导入vincenty
导入json
导入系统
api=PyiCloudService('*********@free.fr','********'))
deviceID=u“Qo+JYVCT3IIL7N3MxRZ6LFDVM8QJDCHJKEDOVSE1MHZWF1SIKVSFQOHYVSZMWV”需要
deviceNAME=”“#只是一个帮助
api.devices[deviceID].location()
api.devices[deviceID].status()
loc=api.devices[deviceID].location()
locstr=str(loc).replace(“u'”,“”).replace(“,”)#.replace(“},”)
但是当我尝试使用
json.loads(locstr)
请给我:
回溯(最后一次调用):文件“distancePAPA.py”,第19行,
在里面
t=json.loads(locstr)文件“/usr/lib/python2.7/json/init.py”,第339行,在loads中
在decode中返回_default_decoder.decode文件“/usr/lib/python2.7/json/decoder.py”,第364行
obj,end=self.raw_decode(s,idx=_w(s,0.end())文件“/usr/lib/python2.7/json/decoder.py”,第382行,在raw_decode中
raise VALUERROR(“无法解码JSON对象”)VALUERROR:无法解码JSON对象
我真的不知道我做错了什么,所以我请求帮助
我只需要gps坐标
PS2:我是法国人,很抱歉弄错了。我使用ast模块
导入ast
loc_str=ast.literal_eval(str(loc))
Json不支持False
和1497518436368L
中的后缀L
;要使其规则化,我们需要再次转换它
s = locstr.replace('False', 'false').replace('L,', ',')
现在,我们可以使用
json.loads
感谢您的解决方案,我最终使用了您的解决方案
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'}
s = locstr.replace('False', 'false').replace('L,', ',')