我是一个新的JSON和python,我希望使用JSON的键和值来比较它。
我正在使用请求lib从网页获取JSON。
最近,我做到了这一点:
import requests;
URL = 'https://.../update.php';
PARAMS = { 'platform':'0', 'authcode':'code', 'app':'60' };
request = requests.get( url=URL, params=PARAMS );
data = request.json( );
我使用这个循环从json获取键和值:
for key, value in data.items( ):
print( key, value );
它会像这样返回JSON部分:
rescode 0
desc success
config {
"app":"14",
"os":"2",
"version":"6458",
"lang":"zh-CN",
"minimum":"5",
"versionName":"3.16.0-6458",
"md5":"",
"explain":"",
"DiffUpddate":[ ]
}
但是在使用漂亮打印的Firefox中我会得到不同的结果:
{
"rescode": 0,
"desc": "success",
"config": "{
\n\t\"app\":\"14\",
\n\t\"os\":\"2\",
\n\t\"version\":\"6458\",
\n\t\"lang\":\"zh-CN\",
\n\t\"minimum\":\"5\",
\n\t\"versionName\":\"3.16.0-6458\",
\n\t\"md5\":\"\",
\n\t\"explain\":\"\",
\n\t\"DiffUpddate\":[\n\t\t\n\t]\n
}"
}
我打算做的是:
if data['config']['version'] == '6458':
print('TRUE!');
但每次我都会收到此错误:
TypeError: string indices must be integers
答案 0 :(得分:2)
您需要解析配置
json.loads(data['config'])['version']
或者编辑PHP以返回关联数组而不是配置对象的字符串