为了账号安全,请及时绑定邮箱和手机立即绑定

AttributeError: 'str' 对象没有属性 'json'

AttributeError: 'str' 对象没有属性 'json'

元芳怎么了 2022-12-20 16:10:19
我在 python 3.7 上写了一些小脚本来接收实际的浏览器版本就这个:import jsondef json_open():    file_json = open('/Users/user/PycharmProjects/Test/configuration.json')    return json.load(file_json)def get_last_version(browser_name):    f = json_open()    res = (f['global']['link_to_latest_browser_version'])    last_version = repr(res.json()['latest']['client'][browser_name]['version'])    #print(last_version[1:-1])    return last_version[1:-1]此外,json 文件存在,但现在无关紧要。已收到:AttributeError: 'str' object has no attribute 'json'.在排队last_version = repr(res.json()['latest']['client'][browser_name]['version'])请告诉我我的错误是什么?
查看完整描述

4 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

试试这个:


import json


FILEJSON = '/Users/user/PycharmProjects/Test/configuration.json'


def get_last_version(browser_name):

    with open(FILEJSON, 'r') as fson:  

        res = json.load(fson)

    last_version = res['global']['link_to_latest_browser_version']\

                    ['latest']['client'][browser_name]['version'][1:-1]

    return last_version

我认为该json_open功能是不必要的。还要考虑到该json.load()方法的行为取决于您正在阅读的文件类型。


查看完整回答
反对 回复 2022-12-20
?
潇湘沐

TA贡献1816条经验 获得超6个赞

如果您尝试转换res为 json 对象,请尝试json.loads(res)代替res.json()



查看完整回答
反对 回复 2022-12-20
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

好了,问题来了:


    last_version = repr(res.json()['latest']['client'][browser_name]['version'])

JSON 对象基本上是一本字典。所以当你这样做时,json['key']它会返回内容,而不是 json 对象。


这res是一个字符串,而不是一个 json 对象,因此没有该.json()属性。


编辑:

如果你想在你的情况下返回一个字符串:


res = json.loads(f['global']['link_to_latest_browser_version'])

last_version = res['latest']['client'][browser_name]['version']


return last_version


查看完整回答
反对 回复 2022-12-20
?
慕沐林林

TA贡献2016条经验 获得超9个赞

您的“res”变量是字符串类型。字符串没有名为 json 的属性。所以 res.json() 是无效的。



查看完整回答
反对 回复 2022-12-20
  • 4 回答
  • 0 关注
  • 426 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号