AttributeError:“ str”对象没有属性“ json”

时间:2020-06-02 14:02:25

标签: python json attributes

我在python 3.7上写了一些小脚本来接收实际的浏览器版本

在这里:

import json


def 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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

好的,问题出在这里:

    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

答案 2 :(得分:1)

如果您尝试将res转换为json对象,请尝试使用json.loads(res)而不是res.json()

答案 3 :(得分:1)

尝试一下:

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()方法的行为取决于type of file you are reading.